Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 3354|回复: 8

[Lazarus实战宝典] 换肤功能-- 轻松实现

[复制链接]

该用户从未签到

发表于 2012-5-18 17:52:54 | 显示全部楼层 |阅读模式
以下的代码,在不用换肤控件的情况下,轻松实现换肤的功能:
  1.   unit Unit1;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
  6.   ExtCtrls;
  7. type
  8.   { TForm1 }
  9.   TForm1 = class(TForm)
  10.     BitBtn1: TBitBtn;
  11.     BitBtn2: TBitBtn;
  12.     Image1: TImage;
  13.     Image2: TImage;
  14.     SpeedButton1: TSpeedButton;
  15.     SpeedButton2: TSpeedButton;
  16.     SpeedButton3: TSpeedButton;
  17.     procedure BitBtn1Click(Sender: TObject);
  18.     procedure BitBtn2Click(Sender: TObject);
  19.     procedure FormCreate(Sender: TObject);
  20.     procedure FormPaint(Sender: TObject);
  21.     procedure SpeedButton3Click(Sender: TObject);
  22.   private
  23.     { private declarations }
  24.   public
  25.     { public declarations }
  26.   end;
  27. var
  28.   Form1: TForm1;
  29. implementation
  30. {$R *.lfm}
  31. { TForm1 }
  32. var
  33.   tc1,tc2:Trect;
  34.   which_color:byte;
  35.   which_status:byte;
  36.   color_show:array [1..2,1..2] of Tcolor
  37.             =(
  38.                (cllime,clyellow),
  39.                (claqua,clbtnface)
  40.              );
  41. procedure TForm1.FormPaint(Sender: TObject);
  42. begin
  43.   case which_status of
  44.    1:
  45.      begin
  46.        tc1.Left:=0;
  47.        tc1.Right:=self.Width;
  48.        tc1.Top:=0;
  49.        tc1.Bottom:=25;
  50.        tc2.Top:=tc1.Bottom;
  51.        tc2.Right:=tc1.Right;
  52.        tc2.Left:=tc1.Left;
  53.        tc2.Bottom:=self.Height;
  54.        with self.Canvas do
  55.        begin
  56.          Brush.Color:=color_show[which_color][1];
  57.          FillRect(tc1);
  58.          Brush.Color:=color_show[which_color][2];
  59.          FillRect(tc2);
  60.        end;
  61.      end;
  62.    2:
  63.      begin
  64.        case which_color of
  65.         1:
  66.           begin
  67.             image1.Visible:=true;
  68.             image2.Visible:=false;
  69.           end;
  70.         2:
  71.           begin
  72.             image1.Visible:=false;
  73.             image2.Visible:=true;
  74.           end;
  75.        end;
  76.      end;
  77.   end;
  78. end;
  79. procedure TForm1.SpeedButton3Click(Sender: TObject);
  80. begin
  81.   close;
  82. end;
  83. procedure TForm1.BitBtn1Click(Sender: TObject);
  84. begin
  85.   image1.Visible:=false;
  86.   image2.Visible:=false;
  87.   which_status:=1;
  88.   if (which_color=1) then which_color:=2
  89.   else which_color:=1;
  90.   refresh;
  91. end;
  92. procedure TForm1.BitBtn2Click(Sender: TObject);
  93. begin
  94.   which_status:=2;
  95.   if (which_color=1) then which_color:=2
  96.   else which_color:=1;
  97.   refresh;
  98. end;
  99. procedure TForm1.FormCreate(Sender: TObject);
  100. begin
  101.   self.BorderStyle:=bsnone;
  102. end;
  103. end.  
复制代码


效果图:









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x

评分

参与人数 1威望 +8 收起 理由
猫工 + 8 优秀文章,支持!n神马都是浮云!

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2012-5-19 09:24:36 | 显示全部楼层
优秀文章,支持!n神马都是浮云!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-5-19 15:39:43 | 显示全部楼层
社区有你就精彩……
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-5-22 16:41:18 | 显示全部楼层

不错!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-5-22 21:21:08 | 显示全部楼层
Lazarus新手学习了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-5-27 22:49:58 | 显示全部楼层
受教了,可以换多少种皮肤的啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-6-5 15:06:33 | 显示全部楼层
可以换无限种皮肤的啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-6-6 14:29:33 | 显示全部楼层
受教了,可以换多少种皮肤的啊,但不是很炫哦
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-6-12 17:12:33 | 显示全部楼层
Lazarus的自绘功能,对换肤功能帮助很大,请看:
http://wiki.freepascal.org/Lazarus_Custom_Drawn_Controls
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 23:18 , Processed in 0.038156 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表