1. :定义k为real,后面用floattostr转化
procedureTForm1.btn1Click(Sender:TObject);
vari:integer;
k:real;//注意
begin
i:=-123;
k:=sqrt(49);//返回值是个实数型
edt1.Text:=inttostr(i);
edt2.Text:=inttostr(abs(i));
edt3.Text:=floattostr(k);//注意
end;
2. 把字串连接起来
procedureTForm1.btn1Click(Sender:TObject);
var
k1,k2:string;
begin
k1:='sfg';
k2:='老高';
edt3.Text:=concat(k1,k2);//注意
end;
3. SelectDISTINCT*fromgzlbwherelbmc='胶靴'
解释:使用DISTINCT选项时,对于所有重复的数据在SELECT返回的结果集合中只保留一行。也就是:如果有重复的记录,只显示一个。
4. selecttop10gzbhfromgzlb
5. selecttop10PERCENTgzbhfromgzlb
解释:第4句:只返回查询到的前10条记录;第5句:返回查询到的前10%的记录。
6. :Select*fromgzlbwhereffzqin(24,60),将发放周期为24和60的记录查询出来。
Select*fromgzlbwheregzbhlike'?0',将所有工种编号中第二个字符为0的记录列出,
Select*fromgzlbwherelbmclike'?皂',将所有劳保名称中第二个汉字为“皂”的劳保用品如肥皂、香皂列出,如果用’??皂’就得不到正确结果。
7. selectlbmcfromgzlbwheregzbhin(selectgzbhfromgzwheregzbhlike'?0')
解释:从GZ数据表中将编号以0结尾的工种编号查询出来,然后在GZLB数据表中查询工种编号属于在前面查询得到的数据集中的工种编号对应的劳保名称。此语句的目的是告诉大家IN后面可以是一个子查询,in前面还可以加上NOT来限制不属于这个数据集。
8. selectlbmcfromgzlbwhereffzq>any(selectffzqfromgzlbwhereffzq>24)
9. procedureTForm3.DBGrid13CellClick(Column:TColumn);
vars1:string;
begin
s1:=query17.FieldValues['gzbh'];
withQuery18do
begin
close;
SQL.clear;
SQL.add('select*fromgzlbwheregzbh=:p1');
ParamByname('p1').Asstring:=s1;
prepare;
open;
end;
end;
10.用户每输入一个姓名汉字的第一个拼音字母,就把所有与此相同的员工名单列出。
procedureTForm3.Edit23Change(Sender:TObject);
var
s,s1:string;
begin
s:=trim(edit23.text)+'*';
withQuery14do
begin
close;
SQL.clear;
SQL.add('select*fromlkygwherexmdmlike:p1');
ParamByname('p1').Asstring:=s;
prepare;
open;
end;
ifquery14.RecordCount=1then//如果有一条纪录
begin//列出发放记录
s1:=query14.FieldValues['ygbh'];
withQuery15do
begin
close;
SQL.clear;
SQL.add('select*fromffjlwhereygbh=:p1');
ParamByname('p1').Asstring:=s1;
prepare;
open;
end;
withQuery16do
begin//列出员工基本信息
close;
SQL.clear;
SQL.add('select*fromlkygwhereygbh=:p1');
ParamByname('p1').Asstring:=s1;
prepare;
open;
end;
end;
end;
上面的代码中有一句s:=trim(edit23.text)+'*';这句和下面两句:
SQL.add('select*fromlkygwherexmdmlike:p1');
//xmdm姓名拼音
ParamByname('p1').Asstring:=s;
实现了模糊查询功能。
11.
varyy,mm,dd:word;
begin
decodedate(Date,yy,mm,dd);
ffrq:=inttostr(yy)+'-07-01';
end;
12.//填写记录,采用数据表循环写入
withtable4do
begin
fori:=1toquery1.recordcountdo
begin
append;
FieldValues['bmbh']:=query1.FieldValues['bmbh'];
FieldValues['ygbh']:=trim(edit9.text);
FieldValues['gzbh']:=trim(edit11.text);
FieldValues['lbmc']:=query1.FieldValues['lbmc'];
FieldValues['ffzq']:=query1.FieldValues['ffzq'];
FieldValues['ffrq']:=ffrq;
post;
query1.Next;
end;
end;
13、MessageDlg的用法
.ifMessageDlg('本功能每次发放前使用一次,且只能使用一次,请确认!',mtConfirmation,[mbYes,mbNo],0)=mrYesthen
begin
table11.EmptyTable;
MessageDlg('初始化完毕,本次发放过程中不要再使用此功能!',mtInformation,[mbOk],0);
end;
14.获得打开文件的完整的路径和名称
ifdlgopen1.Executethen
edt1.Text:=dlgopen1.FileName;
16.运行欢迎界面
programProject1;
uses
Forms,Windows,Messages,SysUtils,//sleep需要用到
Unit1in'Unit1.pas'{Form1},
Unit2in'D:\ProgramFiles\Borland\Delphi7\Projects\Unit2.pas'{Form2};
{$R*.res}
begin
form2:=tform2.Create(application);
form2.Show;
form2.Update;
Application.Initialize;
Application.CreateForm(TForm1,Form1);
sleep(2000);//停留2秒钟
form2.Free;
Application.Run;
end.
17.加密和解密算法
unitcrypt;
interface
USES
Classes;
const
C1=52845;
C2=22719;
functionEncrypt(S:String;Key:Word):String;
functionDecrypt(S:String;Key:Word):String;
implementation
functionEncrypt(S:String;Key:Word):String;
var
I:Integer;
j:Integer;
begin
Result:=S;
forI:=1toLength(S)do
begin
Result[I]:=char(byte(S[I])xor(Keyshr8));
Key:=(byte(Result[I])+Key)*C1+C2;
end;
s:=Result;
Result:='';
fori:=1tolength(s)do
begin
j:=Integer(s[i]);
Result:=Result+Char(65+(jdiv26))+Char(65+(jmod26));
end;
end;
functionDecrypt(S:String;Key:Word):String;
var
I:Integer;
j:Integer;
begin
result:='';
fori:=1to(length(s)div2)do
begin
j:=(Integer(s[2*i-1])-65)*26;
j:=j+(Integer(s[2*i])-65);
result:=result+Char(j);
end;
s:=result;
forI:=1toLength(S)do
begin
Result[I]:=char(byte(S[I])xor(Keyshr8));
Key:=(byte(S[I])+Key)*C1+C2;
end;
end;
end.
18.下面是获取这软件四个版本号的通用函数代码,用户直接调用即可:
functionGetBuildInfo:string;
var
VerInfoSize:DWORD;
VerInfo:Pointer;
VerValueSize:DWORD;
VerValue:PVSFixedFileInfo;
Dummy:DWORD;
V1,V2,V3,V4:Word;
begin
VerInfoSize:=GetFileVersionInfoSize(PChar(ParamStr(0)),Dummy);
ifVerInfoSize=0thenbegin
Dummy:=GetLastError;
Result:='0.0.0.0';
end;{if}
GetMem(VerInfo,VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)),0,VerInfoSize,VerInfo);
VerQueryValue(VerInfo,'\',Pointer(VerValue),VerValueSize);
withVerValue^dobegin
V1:=dwFileVersionMSshr16;
V2:=dwFileVersionMSand$FFFF;
V3:=dwFileVersionLSshr16;
V4:=dwFileVersionLSand$FFFF;
end;
Result:=IntToStr(V1)+'.'
+IntToStr(V2)+'.'
+IntToStr(V3)+'.'
+IntToStr(V4);
FreeMem(VerInfo,VerInfoSize);
end;
调用示例:
version.caption:='版本号:'+GetBuildInfo;//version是一个标签组件。
19.打开一个CHM格式的文件代码如下:
procedureTMainForm.help1Click(Sender:TObject);
varfpath:string;
begin
fpath:=ExtractFilePath(ParamStr(0))+'help.chm';
ShellExecute(handle,nil,pchar(fpath),nil,nil,sw_shownormal);
end;
20读写注册表的操作。
//创建注册信息-------------
TheReg:=TRegistry.Create;
TheReg.RootKey:=HKEY_LOCAL_MACHINE;
keyName:='SOFTWARE\lklb';
sr:='userid';
sr1:='user';
ifTheReg.OpenKey(KeyName,True)then
begin
TheReg.WriteString(sr1,edit1.text);//用户名
TheReg.WriteString(sr,pass(passwd));//系列号
TheReg.CloseKey;
label3.caption:='注册成功!';
end;
现在的程序在状态条上或在标题栏上显示用户名称,如下代码:
//读取注册信息用户名显示在状态条上
TheReg:=TRegistry.Create;
TheReg.RootKey:=HKEY_LOCAL_MACHINE;
keyName:='SOFTWARE\lklb';
ifTheReg.OpenKey(keyName,True)then
begin
user:='【用户名称】:'+TheReg.readString('user');
StatusBar.Panels[0].Width:=length(user)*6+10;
StatusBar.Panels[0].Text:=user;
TheReg.CloseKey;
end;
Thereg.Free;
上述代码动态控制状态栏中显示用户名称的面板的宽度,因为用户名称长短不一,注意看看字符和像素的换算(需要自己摸索一下)。
检测是否盗版部分代码:
//读取注册信息
TheReg:=TRegistry.Create;
TheReg.RootKey:=HKEY_LOCAL_MACHINE;
keyName:='SOFTWARE\lklb';
sr:='userid';
ifTheReg.OpenKey(KeyName,True)then
begin
sr1:=TheReg.readString(sr);//读取注册表密码
TheReg.CloseKey;
end;
ifsr1<>sr2then//sr2为计算经变换后的密码
begin
MessageDlg('非注册用户,是盗版的吧?',mtWarning,[mbOK],0);
application.Terminate;
end;
21.。读取硬盘序号的代码也很简单,用API函数,这种方式大家也可能早就知道了,这里就简单提一下吧,关键代码如下:
GetVolumeInformation(pchar('c:\'),nil,0,pdw,mc,fl,nil,0);
这里注意一定要取C盘序号,因为可能有的硬盘没有分区,没有D盘等等,为了程序的通用性,取C盘。
22.录入界面打开时需要将将所有的部门名称添加到ComboBox中。
procedureTForm3.TabSheet1Show(Sender:TObject);
vari:integer;
begin
Combobox1.Clear;
Combobox3.Clear;
//添加部门列表
table1.Active:=true;
table1.first;
fori:=1totable1.RecordCountdo
begin
Combobox1.items.add(table1.FieldValues['bmmc']);
table1.Next;
end;
end;
23.语法:EnableWindow(hWnd:HWND;bEnable:BOOL):BOOL;单
元:windows.pas
作用:指定的窗口里允许或禁止所有鼠标及键盘输入
返回值:BOOL,如果返回真,WINDOWS已经禁止,否则返回假
procedureTForm1.btn1Click(Sender:TObject);
begin
if(IsWindowEnabled(btn2.Handle))then//btn2可用时
begin
enablewindow(btn2.Handle,false);//置btn2不可用
btn1.Caption:='btn2:false';
edt1.Text:='btn2isdisabled';
end
else//btn2不可用时
begin
enablewindow(btn2.Handle,true);
btn1.Caption:='btn2:true';
edt1.Text:='btn2isenabled';
end;
end;
24.获得文本密码
procedureTForm1.btn3Click(Sender:TObject);
var
name:pchar;
l:integer;
begin
l:=getwindowtextlength(edt2.Handle)+1;
getmem(name,l);
getwindowtext(edt2.Handle,name,l);
lbl1.Caption:=string(name);
freemem(name,0);
end;
25窗体动态显示,给人以提醒
procedureTForm1.tmr1Timer(Sender:TObject);
begin
FlashWindow(Form1.Handle,true);
FlashWindow(Application.handle,TRUE);
end;
26.Tile窗口重排“瓦状形”,cascade窗口重排“重叠形”。
27.标签上的字体颜色随机变化,在timer事件里编写
procedureTForm1.tmr1Timer(Sender:TObject);
begin
randomize;
lbl1.Font.Color:=rgb(random(255),random(255),random(255));
lbl2.Font.Color:=rgb(random(255),random(255),random(255));
end;
28.安装报表控件
Component-->installpackages–>add->delphi7->bin->dclqrt70.bpl
29LISTVIEW实现隔行背景颜色
procedureTForm1.lv1AdvancedCustomDrawItem(Sender:TCustomListView;Item:TListItem;State:TCustomDrawState;Stage:TCustomDrawStage;varDefaultDraw:Boolean);
begin
ifitem.Indexmod2=1then
sender.Canvas.Brush.Color:=clYellow
else
sender.Canvas.Brush.Color:=clwhite;
end;
end.
30.DBGrid中回车到下个位置(Tab键)
procedureTForm1.DBGrid1KeyPress(Sender:TObject;varKey:Char);
begin
ifKey=#13then
ifDBGrid1.Columns.Grid.SelectedIndex<DBGrid1.Columns.Count-1then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex+1].Field.FocusControl
else
begin
Table1.next;
DBGrid1.Columns[0].field.FocusControl;
end;
end;
31窗体渐渐出现.
procedureTForm1.FormCreate(Sender:TObject);
begin
AnimateWindow(Handle,1000,AW_CENTER);//表示延时长度
end;
32case和子界范围的用法
procedureTForm1.btn1Click(Sender:TObject);
varachievement:0..100;
begin
achievement:=strtoint(edt1.Text);
caseachievementof
90..100:lbl1.Caption:='优秀,非常棒!';
80..89:lbl1.Caption:='良好,很棒!';
70..79:lbl1.Caption:='中等,较棒!';
60..69:lbl1.Caption:='及格,继续努力!';
else
lbl1.Caption:='不及格,尚须努力!';
end;
end;
33.让状态栏里的时间随着系统时间而走(放一个timer控件)
procedureTForm1.tmr1Timer(Sender:TObject);
begin
stat1.Panels[5].Text:=formatdatetime('hh:mm:ss',now);//显示时间
end;
stat1.Panels[3].Text:=formatdatetime('yyyy-mm-dd',now);//显示日期
34.获得treeview里被选中的内容(treeview单击事件中)
procedureTForm1.tv1Click(Sender:TObject);
begin
edt1.Text:=tv1.Selected.Text;
end;
35.获得lsitview里被选中的内容(listview单击事件中)
procedureTForm1.lv1Click(Sender:TObject);
begin
edt1.Text:=lv1.Selected.Caption;
end;
36.对控件生成多行提示信息
procedureTForm1.FormCreate(Sender:TObject);
begin
lbl1.Caption:='中'+#13+'国'+#13+'普'+#13+'科';
end;
37获取windows版本信息
procedureTForm1.btn1Click(Sender:TObject);
varosvi:osversioninfo;
begin
osvi.dwOSVersionInfoSize:=sizeof(osversioninfo);
getversionex(osvi);
edt2.Text:=inttostr(osvi.dwMajorVersion)+'.'+inttostr(osvi.dwMinorVersion)+'.'+inttostr(osvi.dwBuildNumber)+'.'+inttostr(osvi.dwPlatformId)+osvi.szCSDVersion;
end;
38.获取CPU信息
procedureTForm1.btn1Click(Sender:TObject);
varsysinfo:system_info;
begin
getsysteminfo(sysinfo);
edt1.Text:='系统中共有'+inttostr(sysinfo.dwNumberOfProcessors)+'个CPU';
casesysinfo.dwProcessorTypeof
386:edt2.Text:='386系列';
486:edt2.Text:='486系列';
586:edt2.Text:='奔腾系列';
end;
end;
39.获取内存信息
通过WindowsAPI函数GlobalMemoryStatus可以获取内存信息。函数原型如下:
VOIDGlobalMemoryStatus(
LPMEMORYSTATUSlpBuffer//指向内存状态信息结构变量的指针
);
其中内存状态信息结构变量的定义如下:
typedefstruct_MEMORYSTATUS{//mst
DWORDdwLength;//sizeof(MEMORYSTATUS)
DWORDdwMemoryLoad;//正在使用的内存占总内存的百分比
DWORDdwTotalPhys;//物理内存的字节数
DWORDdwAvailPhys;//未使用的物理内存的字节数
DWORDdwTotalPageFile;//交换文件的字节数
DWORDdwAvailPageFile;//未使用的交换文件的字节数
DWORDdwTotalVirtual;//虚拟内存的字节数
DWORDdwAvailVirtual;//未使用的虚拟内存的字节数
}MEMORYSTATUS,*LPMEMORYSTATUS;
edit1.Text:=IntToStr(MemInfo.dwMemoryLoad)+'%的内存在使用';
Edit2.Text:='物理内存共有'+IntToStr(MemInfo.dwTotalPhys)+'字节';
Edit3.Text:='未使用的物理内存有'+IntToStr(MemInfo.dwAvailPhys)+'字节';
Edit4.Text:='交换文件的大小为'+IntToStr(MemInfo.dwTotalPageFile)+'字节';
Edit5.Text:='未使用的交换文件大小为'+IntToStr(MemInfo.dwAvailPageFile)+'字节';
Edit6.Text:='虚拟内存空间大小为'+IntToStr(MemInfo.dwTotalVirtual)+'字节';
Edit7.Text:='未使用的虚拟内存大小为'+IntToStr(MemInfo.dwAvailVirtual)+'字节';
procedureTForm1.btn1Click(Sender:TObject);//完整程序
varmemory:memorystatus;
begin
memory.dwLength:=sizeof(memorystatus);
globalmemorystatus(memory);
edt1.Text:=IntToStr(memory.dwMemoryLoad)+'%的内存在使用';Edt2.Text:='物理内存共有'+IntToStr(memory.dwTotalPhys)+'字节';Edt3.Text:='未使用物理内存有'+IntToStr(memory.dwAvailPhys)+'字节';Edt4.Text:='交换文件大小为'+IntToStr(memory.dwTotalPageFile)+'字节';Edt5.Text:='未使用交换文件大小为'+IntToStr(memory.dwAvailPageFile)+'字节';
Edt6.Text:='虚拟内存空间大小为'+IntToStr(memory.dwTotalVirtual)+'字节';Edt7.Text:='未使用虚拟内存大小为'+IntToStr(memory.dwAvailVirtual)+'字节';
end;
40.获取用户注册信息
在软件安装的过程中,有时需要用户的注册信息。通过操作系统注册表,可以方便地得到这些注册信息。
添加Button组件的默认
事件的处理过程如下:
procedure TForm1.Button1Click(Sender:TObject);
var
Reg:TRegistry;
begin
Reg:=TRegistry.create
Reg.RootKey:=HKEY_LOCAL_MACHINE;//主键
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion',False);//打开键
//读取公司信息
Edt1.Text:=Reg.ReadString('RegisteredOrganization');//读取用户信息
Edit2.Text:= Reg.ReadString('RegisteredOwner'); //读取序列号信息
Edit3.Text:= Reg.ReadString('ProductID');//读取注册码信息
Edit4.Text:= Reg.ReadString('ProductKey');
Reg.CloseKey;//关闭键
Reg.free;
end;
41.丰富多彩的标签(TrichEdit)
首先将TRichEdit控件的边框属性BorderStyle设为bsNone;
同时设置只读属性ReadOnly为True;
然后利用Windows提供的“写字板”制作好rtf格式的文本,通过以下语句就可以显示出来了:
procedure TForm1.FormCreate(Sender: TObject);
begin
REdt1.PlainText:=false;
REdt1.Lines.LoadFromFile('d:\123.rtf');
end;
42生成非矩形窗口(win API函数)
procedure TForm1.FormCreate(Sender: TObject);
var hr :thandle;
begin
//hr:=CreateEllipticRgn(0,0,width,height); //定义椭圆形
//hr:=CreateRectRgn(0,0,80,80); //定义矩形
hr:=createroundrectrgn(10,10,width,height,1000,1000);//定义圆角矩形
setwindowrgn(handle,hr,true); //设置圆角窗口
end;
43.操作进度条
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
stat1: TStatusBar;
btn1: TButton;
procedure stat1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
progressbar:tprogressbar;//定义进度条组件
progressbarrect:trect;//动态定义进度条组件的尺寸
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.stat1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;const Rect: TRect);
begin
progressbarrect:=rect; //在状态栏组件的drawpanel事件里编程
end;
procedure TForm1.btn1Click(Sender: TObject);
var
i,stepc:integer;
begin
progressbar:=tprogressbar.create(form1);
stepc:=50000; //设置进度条的最大长度
with progressbar do
width:=progressbarrect.Right -progressbarrect.left;
progressbar.Height:=stat1.Height;;
//top:=progressbarrect.Top ;
//left:=progressbarrect.left;
//width:=progressbarrect.Right -progressbarrect.left;
visible:=true; //显示进度条
try
progressbar.Parent:=stat1; //进度条的父级
progressbar.Min :=0; //最小值
progressbar.max:=stepc;
progressbar.step:=1;
for i:=0 to stepc do progressbar.StepIt ;//进度条累加
showmessage('chenggong');
except
progressbar.Free ; //进度条释放
end;
end;
end.
43在Form的边框上作图,修饰form的边框
private
{ Private declarations }
procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
//声明一个过程
procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);//调用过程
var
dc : hDc;
Pen : hPen;
OldPen : hPen;
OldBrush : hBrush;
begin
inherited;
dc := GetWindowDC(Handle);
msg.Result := 1;
Pen := CreatePen(PS_SOLID, 4, RGB(255, 0, 0));
OldPen := SelectObject(dc, Pen);
OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
Rectangle(dc, 0,0, Form1.Width, Form1.Height);
SelectObject(dc, OldBrush);
SelectObject(dc, OldPen);
DeleteObject(Pen);
ReleaseDC(Handle, Canvas.Handle);
end;
44制作动态字幕(由下向上运动)
procedure TForm1.FormCreate(Sender: TObject);
begin
lbl1.Caption:='制作地点:飞天工作室'+#13+#13
+'制作人:龙虎飞天'+#13+#13
+'版本号:4.65.565.646'+#13+#13
+'制作日期:2005-7-29';
end;
procedure TForm1.tmr1Timer(Sender: TObject);
begin
lbl1.Top :=lbl1.Top-5;
if (lbl1.Top<-lbl1.Top -300) then lbl1.Top:=pnl1.Height ;
randomize;
lbl1.Font.Color :=rgb(random(255),random(255),random(255));
end;
45 dbImage调用图片
If openpicturedialog1.Execute Then
dbImage1.Picture.LoadFromFile(openpicturedialog1.FileName);
46自定义菜单外观
首先将菜单的ownerdraw属性设置为true;然后在菜单项的drawitem中写入代码即可。
procedure TForm1.New1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
acanvas.Font.Color:=clred;
if selected then
SetBkColor(acanvas.handle,clgreen)
else
setBkcolor(acanvas.handle,clblue);
acanvas.TextRect(arect,0,0,new1.caption);
end;
47.让窗体透明
设置一些属性
AlphaBlend:=true;
TrackBar1.Min:=0;
TrackBar1.Max:=255;
TrackBar1.Frequency:=25;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin //一句代码
Form1.AlphaBlendValue:=TrackBar1.Max-form1.TrackBar1.Position;
end;
48设计多边形窗体
procedure TForm1.FormCreate(Sender: TObject);
var pt:array[0..4] of TPoint;
m_rgn:HRGN;
begin
pt[0].X:=Self.Width div 2;
pt[0].Y:=0;
pt[1].X:=0;
pt[1].Y:=self.Height div 2;
pt[2].X:=self.Width div 2;
pt[2].Y:=self.Height;
pt[3].X:=Self.Width;
pt[3].Y:=Self.Height div 2;
pt[4].X:=Self.Width+20;
pt[4].Y:=10;
m_rgn:=CreatePolygonRgn(pt,5,WINDING);
SetWindowRgn(Self.Handle,m_rgn,True);
end;
49由CheckBox1的True和False控制窗体标题栏闪烁
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Self.Handle,Self.CheckBox1.Checked);
end;
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=893748