用ThemeSkin ,在程序中(不是Comobox)怎样用代码切换皮肤???(200分)

  • 主题发起人 主题发起人 Cbfan
  • 开始时间 开始时间
C

Cbfan

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]用ThemeSkin ,在程序中(不是Comobox)怎样用代码切换皮肤???

就是,TeThemeEngine->Theme=??????????


谢谢。
 
中文输入你解决了吗?
 
将ThemeEngine的SkinFile设置为所需的皮肤文件(*.xskn)即可。
 
不是呀。我用的是ThemeEngine,不是SkinEngine,我不知道在程序中(不是Comobox)怎样用代码切换皮肤???


谢谢。
 
请关注!!!谢谢。[:(!]
 
我也遇到同样的问题,现在使用的是菜单来选择。
用INIFILE保存下来:
iniz.WriteString('ThemeSet','Set',TeThemeEngine1.Theme.ClassName);

但是不知道如何取出来。
下面是各主题的Index:
No Theme:0
Flat:1
OfficeXP:2
Cool Flat:3
Advanced:4
Luna:5
MetalLuna:6
Highlight:7
Lines:8
关注此题,我可加分。
 
我琢磨了下,照我写下面可以

//关键
uses KsThemeThemes, tethemestd, tethemehighlight, tethemeofficexp,
TeThemeLuna, TeThemeLines, TeThemeFlat, tethememetalluna, tethemekde,
tethemecoolflat //关键





procedure TfrmMain.initskin;
var
opini: Tinifile;
pifu: integer;
begin
opini := Tinifile.create(GetCurrentDir + '/tywdoption.ini');
try
pifu := opini.readinteger('skinoption', 'skin', 0);
finally
opini.Free;
end;
initskinmenu;
case pifu of //
0:
begin
initskinmenu;
CustomItem18.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeHighlight);
end;
1:
begin
initskinmenu;
CustomItem15.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeFlat);
end;
2:
begin
initskinmenu;
//CustomItem17.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeHighlight);
end;
3:
begin
initskinmenu;
CustomItem4.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeLuna);
end;
4:
begin
initskinmenu;
CustomItem6.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeMetalLuna);
end;
5:
begin
initskinmenu;
CustomItem16.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeKDE);
end;
6:
begin
initskinmenu;
CustomItem7.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeCoolFlat);
end;
7:
begin
initskinmenu;
CustomItem16.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeOfficeXP);
end;
8:
begin
initskinmenu;
CustomItem21.Checked := true;
NgThemeEngine1.ChangeTheme(TTeTheme);
end;
9:
begin
initskinmenu;
CustomItem19.Checked := true;
NgThemeEngine1.ChangeTheme(TTeThemeStd);
end;
end; // case

end;
 
送分把
另外中文问题
示中文其实没什么,你看看TeThemeluna.pas 查找 TTeThemeLuna.GetFontName

function TTeThemeLuna.GetFontName(Font: TTeThemeFont): string;
begin
case Font of
ngfCaptionText: Result := '宋体';
ngfSmCaptionText: Result := '宋体';
{ Menus }
ngfMenuBarText: Result := '宋体';
ngfMenuItemText: Result := '宋体';
{ Controls }
ngfWindowText: Result := '宋体';
else
Result := '宋体';
end;
end;

function TTeThemeLuna.GetFontSize(Font: TTeThemeFont): integer;
begin
case Font of
ngfCaptionText: Result := 10;
ngfSmCaptionText: Result := 9;
{ Menus }
ngfMenuBarText: Result := 9;
ngfMenuItemText: Result := 9;
{ Contorls }
ngfWindowText: Result := 9;
else
Result := 9;
end;
end;

所有skin文件照这样改就支持中文了
 
ThemeSkin 好使么?
哪有下的?
 
多人接受答案了。
 
后退
顶部