首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
亲,您未登录哦! 登录 | 注册

Delphi 4.0换肤

打印文章

分享到:
湖南刘炼

    现在软件的界面设计很流行“换肤”(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  
应付了。

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章