[摘要]湖南刘炼     现在软件的界面设计很流行“换肤”(SKIN),例如ICQ、Winamp、超级解霸等等。这种技术  的应用可以最大程度的彰显用户的个性,所以一经推出就大受欢迎。其实这种技术实现起来很...
湖南刘炼 
    现在软件的界面设计很流行“换肤”(SKIN),例如ICQ、Winamp、超级解霸等等。这种技术  
的应用可以最大程度的彰显用户的个性,所以一经推出就大受欢迎。其实这种技术实现起来很简  
单,下面就是我用Delphi 4.0换肤的例子。   
  首先,在窗体上放一个Image控件,一个Button控件和一个OpenDialog控件。   
  然后,修改属性。将窗体的Caption属性改为Test Skin Program;将Image控件的Align  
属性改为alClient,将Stretch属性改为True;将Button控件的Caption属性改为Skin。其余属性不  
变。   
  最后,输入代码吧!   
  unit mainform;   
  interface   
  uses   
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   
  StdCtrls, Buttons, ExtCtrls,inifiles, jpeg, Menus;   
  //一定要将inifiles单元加入uses   
  type   
  TForm1 = class(TForm)   
  Image1: TImage;   
  OpenDialog1: TOpenDialog;   
  Button1: TButton;   
  procedure FormCreate(Sender: TObject);   
  procedure Button1Click(Sender: TObject);   
  private   
  { Private declarations }   
  public   
  { Public declarations }   
  end;   
  var   
  Form1: TForm1;   
  implementation   
  {$R*.DFM}   
  procedure TForm1.FormCreate(Sender: TObject);   
  Var   
  SkinINI : Tinifile;   
  SkinPicture : String;   
  begin   
  SkinINI := TiniFile.Create('c:\my documents\skin.ini');   
  SkinPicture:=SkinINI.ReadString('Interface','skin','');   
  //将“皮肤”的图片信息存储在SKIN.INI文件中。当然,你还可以将更多的信息存进该文件中。   
  //例如:SKIN.INI   
  //[interface]   
  // skin = c:\my documents\mylove.jpg   
  IF SkinPicture<>'' then   
  Begin   
  try   
  Image1.Picture.LoadFromFile(SkinPicture);   
  except   
  end;   
  End;   
  SkinINI.Free;   
  end;   
  procedure TForm1.Button1Click(Sender: TObject);   
  Var   
  SkinINI : Tinifile;   
  SkinPicture : String;   
  Success : Boolean; //指示换肤是否成功   
  begin   
  SkinINI := TiniFile.Create('c:\my documents\skin.ini');   
  SkinPicture:=SkinINI.ReadString('Interface','skin','');   
  OpenDialog1.Filter:='All Image File(*.jpg;*.jpeg;*.bmp;*.ico) *.jpg;*.jpeg;*.bmp;*.ico '+   
  'Bitmaps(*.bmp) *.bmp '+   
  'Jpeg Image File(*.jpg;*.jpeg) *.jpeg;*.jpg '+   
  'Icons(*.ico) *.ico';   
  Success:=True;   
  IF OpenDialog1.Execute then   
  Begin   
  try   
  Image1.Picture.LoadFromFile(OpenDialog1.Filename);   
  except   
  Application.MessageBox('This file is not load!','Error!',MB_OK);   
  Success:=False;   
  end;   
  IF Success then SkinINI.WriteString('interface','skin',OpenDialog1.Filename);   
  //若换肤成功,将图片信息存进skin.ini文件中   
  End;   
  SkinINI.Free;   
  end;   
  end.   
  怎么样,换肤简单吧(什么东西都是“难的不会,会的不难”)!你还可以在此基础上继续向窗  
体上添加各种控件。因为这只是一个示例,所以就没有加那些。另外,严格得说,“换肤”指令应该  
在菜单中(即MainMenu控件中,其实也很简单)。但为了没有“赚稿酬”之嫌,所以就用一个Button  
应付了。  
关键词:Delphi 4.0换肤