大家好,我用的是VclSkin5.03版本,我想请教一下它换皮肤的原理,TSkinData类中有很多类及方法,但是很多不知道是做什么的,还有我通过Button单击换皮肤,没效果,是说要进行画面的更新吗?
Code:procedure TForm1.FormCreate(Sender: TObject);
begin
if not SkinData1.Active then
begin
SkinData1.Active:= True;
end;
OpenDialog1.Filter:='Skin皮肤文件(*.skn)|*.SKN';
OpenDialog1.InitialDir:='D:\Program Files\VclSkin\VCLSkin5.03.07.12\skins\'
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// SkinData1.LoadFromCollection(SkinStore1, 0);
// SkinStore1.LoadFromFile(OpenDialog1.FileName);
SkinData1.SkinFile:= OpenDialog1.FileName;
// SkinData1.SkinStore:= OpenDialog1.FileName;
end;
end;程序运行起来,点击Button没反应?但是如果你在Object Inspector中去设置它的Active和SkinStore再运行就OK,为什么在代码中操作就不行呢?请指教...
Code:procedure TForm1.FormCreate(Sender: TObject);
begin
if not SkinData1.Active then
begin
SkinData1.Active:= True;
end;
OpenDialog1.Filter:='Skin皮肤文件(*.skn)|*.SKN';
OpenDialog1.InitialDir:='D:\Program Files\VclSkin\VCLSkin5.03.07.12\skins\'
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// SkinData1.LoadFromCollection(SkinStore1, 0);
// SkinStore1.LoadFromFile(OpenDialog1.FileName);
SkinData1.SkinFile:= OpenDialog1.FileName;
// SkinData1.SkinStore:= OpenDialog1.FileName;
end;
end;程序运行起来,点击Button没反应?但是如果你在Object Inspector中去设置它的Active和SkinStore再运行就OK,为什么在代码中操作就不行呢?请指教...
procedure TForm1.FormCreate(Sender: TObject);
begin
// if not SkinData1.Active then
// begin
// SkinData1.Active:= True;
// end;
OpenDialog1.Filter:='Skin皮肤文件(*.skn)|*.SKN';
OpenDialog1.InitialDir:='D:\第三方控件\VclSkin\skins\'
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// SkinData1.LoadFromCollection(SkinStore1, 0);
// SkinStore1.LoadFromFile(OpenDialog1.FileName);
SkinData1.SkinFile:= OpenDialog1.FileName;
// SkinData1.SkinStore:= OpenDialog1.FileName;
skindata1.Active:=true;
end;end;
报错出现在TWinSkinForm.DrawBorder的
temp:=GetHMap(r,fsd.border[n].map,fsd.border[n].r,I,fsd.border[n].frame,Tile,sp);
请问这是什么问题?
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
skindata1.Active:=false;
Action:=cafree;
end;
要不就是VCL版本不一样?