앞에서 만든 SkinLoadU를 이용하는 방법입니다.
먼저 델파이를 실행하고 폼을 하나 만듭니다.
그 폼을 저장하면 DFM파일이 생성될 것입니다.
이렇게 몇개의 폼을 만들어 놓습니다.
물론 폼 안에 사용되는 객체들은 어떤 것들이 있어도 관계 없지만
같은 기능을 하는 객체들은 같은 이름이어야 합니다.
그렇게 만들어진 DFM파일은
DFMToBin('C:\Skin\Skin1.dfm', 'C:\Sample\Skin\Skin1.bin');
DFMToBin('C:\Skin\Skin2.dfm', 'C:\Sample\Skin\Skin2.bin');
DFMToBin('C:\Skin\Skin3.dfm', 'C:\Sample\Skin\Skin3.bin');
프로시저를 이용하여 Bin파일로 변환해 줍니다.
이렇게 준비가 되면 이제 이렇게 만들어진 스킨을 불러와 메인폼으로 사용하는 방법을 보여드리겠습니다.
먼저 어플리케이션 소스코드입니다.
program Main;
uses
Vcl.Forms,
VCL.Dialogs,
Vcl.StdCtrls,
SkinLoadU in 'SkinLoadU.pas',
SkinEventU in 'SkinEventU.pas';
{$R *.res}
Var
SkinFile : String;
Form : TForm;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
IF NOT PromptForFileName(SkinFile, '(*.bin)|*.bin', '*.bin', 'Select Skin', 'C:\Sample\Skin', False) Then Exit;
Application.CreateForm(TForm, Form);
LoadComponentFromBinFile(Form, SkinFile);
TButton(Form.FindComponent('Button1')).OnClick := TEvent.ButtonClick;
TButton(Form.FindComponent('Button2')).OnClick := TEvent.ButtonClick;
Application.Run;
end.
그리고 메인폼에 사용될 이벤트들은 다음과 같이 별도의 유닛입니다.
unit SkinEventU;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TEvent = class
Class procedure ButtonClick(Sender: TObject);
end;
implementation
Class procedure TEvent.ButtonClick(Sender: TObject);
begin
ShowMessage((Sender AS TButton).Caption + ' Clicked');
end;
end.
이제 컴파일하여 실행해 보면
미리 만들어 놓은 Skin1.bin, Skin2.bin, Skin3.bin 중 하나를 선택할 수 있을 것입니다.
그 중 하나를 선택하면 선택된 스킨으로 폼이 생성되고 보여질 것입니다.
그리고 그 폼이 닫히면 당연히 프로그램이 종료되겠죠.
이렇게 완성된 프로그램의 실행파일을 압축하여 첨부하였으니 참고하시기 바랍니다.