이번 시간에는 앞에서 만든 함수를 이용하여 저장된 Bin파일을 불러와 폼을 생성하기 위한 함수를 만들어 보겠습니다.
procedure LoadComponentFromBinFile(Component: TComponent; Const FileName: String);
var
MemStream : TMemoryStream;
i: Integer;
begin
if not Assigned(Component) then Exit;
if NOT FileExists(FileName) then Exit;
try
MemStream := TMemoryStream.Create;
MemStream.LoadFromFile(FileName);
MemStream.Position := 0;
MemStream.ReadComponent(Component);
Application.InsertComponent(Component);
finally
FreeAndNil(MemStream);
end;
end;
이 함수를 사용하는 방법은 간단합니다.
Var
Form : TForm;
Begin
Form := TForm.Create;
LoadComponentFromBinFile(Form; 'C:\Sample\Skin\Skin1.bin');
Form.Show;
End;
아주 간단하죠.
하지만 이렇게만 해서는 에러가 발생합니다.
빈 폼을 만들고 생성된 폼에 객체들을 생성하기 위해서는
생성될 객체들을 모두 등록해야 합니다.
RegisterClass(TEdit);
RegisterClass(TButton);
이런식으로 말이죠.
이렇게 하기 위해서는 새로 불러들일 폼에서 어떤 객체들을 사용할 것인지를 먼저 예측해야 합니다.
사실상 불가능하다고 봐야겠네요.
이 내용은 다음 시간에 연재하겠습니다.
|