⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skinunt.pas

📁 絮语2007视频聊天软件源程序.仅供参考
💻 PAS
字号:
unit skinunt;

interface

uses

  Windows,Sysutils,classes,menus,WinSkinData,structureunt;

type
  Tskin=class
      SkinData: TSkinData;
      constructor Create;
      destructor  Destroy;override;
    private
      skinlist:array of pskininfo;
      procedure searchskin;
      function getskinnametoid(s:String):integer;
      procedure skininclick(sender:tobject);
      procedure show_cur_skin(skin_name:string);
    public
      procedure addskinlist(tmpmenu:TMenuItem);
  end;
  
implementation
uses shareunit;

//------------------------------------------------------------------------------
// 载入skin 外观皮肤列表
//------------------------------------------------------------------------------
procedure Tskin.searchskin;
var path,s:string;
    i,p:integer;
    memos:tstringlist;
begin
path:=extractfilepath(application_name);
memos:=tstringlist.create;
try
findfile(path+'skins\',memos,false);
if memos.count>0 then
 begin
  for i:=1 to memos.count do
  if lowercase(extractfileext(memos.Strings[i-1]))='.skn' then
    begin
    p:=high(skinlist)+1;
    setlength(skinlist,p+1);
    s:=extractfilename(memos.Strings[i-1]);
    skinlist[p].skinname:=changefileext(s,'');
    skinlist[p].skinfile:=memos.Strings[i-1];
    end;
 end;
finally
freeandnil(memos);
end;
end;

//------------------------------------------------------------------------------
// 返回skin所在的ID
//------------------------------------------------------------------------------
function Tskin.getskinnametoid(s:String):integer;
var i:integer;
begin
result:=0;
for i:=low(skinlist) to high(skinlist) do
 if skinlist[i].skinname=s then
    begin
    result:=i+1;
    break;
    end;
end;

//------------------------------------------------------------------------------
//skin click
//------------------------------------------------------------------------------
procedure Tskin.skininclick(sender:tobject);
begin
tmenuitem(sender).checked:=true;
show_cur_skin(tmenuitem(sender).hint);
end;

//------------------------------------------------------------------------------
// 将skin 列表加入到指定 menu
//------------------------------------------------------------------------------
procedure Tskin.addskinlist(tmpmenu:TMenuItem);
var tmp:tmenuitem;
    i:integer;
begin
if high(skinlist)>0 then
for i:=high(skinlist) downto low(skinlist) do
  begin //添加插件菜单...
  tmp:=tmenuitem.create(nil);
  tmp.Hint:=skinlist[i].skinname;
  tmp.caption:=skinlist[i].skinname;
  tmp.RadioItem:=true;
  tmp.GroupIndex:=1;
  if tmp.Hint=skin_string then tmp.Checked:=true;
  tmp.OnClick:=skininclick;
  tmpmenu.add(tmp);
  end;
end;

//------------------------------------------------------------------------------
// 显示 当前的 skin
//------------------------------------------------------------------------------
procedure Tskin.show_cur_skin(skin_name:string);
var k:integer;
begin
if skin_name='' then skin_name:='xp';
if high(skinlist)>0 then
    begin
    k:=getskinnametoid(skin_name);
    if k>0 then
      try
      SkinData.skinfile:=skinlist[k-1].skinfile;
      if not skindata.Active then skindata.Active:=true;
      skin_string:=skin_name;
      except
      skindata.Active:=false;
      skin_string:='';
      end;
    end;
end;


//------------------------------------------------------------------------------
// 创建 skin
//------------------------------------------------------------------------------
constructor Tskin.Create;
begin
 searchskin;
 skindata:=TSkinData.Create(nil);
 SkinCaption:=TSkinCaption.Create(nil);
 SkinCaption.Active:=true;
 skindata.MenuUpdate:=false;
 skindata.SkinControls:=[xcMainMenu,xcMenuItem,xcToolbar,xcControlbar,xcCombo,
 xcCheckBox,xcRadioButton,xcProgress,xcScrollbar,xcEdit,xcButton,xcBitBtn,
 xcSpin,xcpanel,xcGroupBox,xcStatusBar,xcTab,xcTrackBar,xcSystemMenu];
 show_cur_skin(skin_string);
end;

//------------------------------------------------------------------------------
// 释放 skin
//------------------------------------------------------------------------------
destructor Tskin.Destroy;
begin
  skinlist:=nil;
  SkinCaption.free;
  skindata.free;
  inherited Destroy;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -