Delphi 组件使用及其代码.docx
《Delphi 组件使用及其代码.docx》由会员分享,可在线阅读,更多相关《Delphi 组件使用及其代码.docx(26页珍藏版)》请在冰豆网上搜索。
![Delphi 组件使用及其代码.docx](https://file1.bdocx.com/fileroot1/2023-7/12/0022aa5b-27f0-4c16-ae7a-827f7d2a58f4/0022aa5b-27f0-4c16-ae7a-827f7d2a58f41.gif)
Delphi组件使用及其代码
Delphi组件使用及其代码
1.数组定义
(1)一维数组数组名:
array[n1..n2]of数据类型;
(2)二维数组数组名:
array[n1..n2,m1..m2]of数据类型;
或者数组名:
array[n1..n2]ofarray[m1..m2]of数据类型;
(3)动态数组数组名:
arrayof数据类型;
使用前要用SetLength(数组名,数组长度);来动态申请空间。
2.使用math数学函数:
需要在uses引用里面添加math;
其中power(a,b)函数是求a的b次幂。
RandomRange(a,b)函数是随机产生一个a、b之间的数。
3.声明全局变量
需要在implementation之后声明;
初始化格式需要在最后一个end之后:
语句:
initialization
赋值语句;
4.常量
在var后使用const关键字声明常量:
如constPI=3.14;
5.枚举类型使用
声明:
type枚举类型名=(枚举值1,枚举值2,……);
定义:
var变量名:
枚举类型名;
6.指针类型
(1)@运算符:
放在变量的前面,获得变量的地址;
^运算符:
放在指针变量的后面,取得该指针变量中所存放地址变量的数据;
(2)声明:
type指针类型名=^数据类型;
var指针变量名:
指针类型名;
或者var指针变量名:
^数据类型;
7.日期时间函数
functionNow:
TDateTime;//返回系统当前日期和时间
functionDate:
TDateTime;//返回系统当前日期
functionTime:
TDateTime;//返回系统当前时间
functionDateTimeToStr(DateTime:
TDateTime):
string;//将日期时间数据转换为字符串
functionStrToDateTime(consts:
string):
TDateTime;//将字符串转换为日期时间数据
functionDateToStr(DateTime:
TDateTime):
string;//将日期数据转换为字符串
functionTimeToStr(DateTime:
TDateTime):
string;//将时间数据转换为字符串
functionFormatDateTime(constFormat:
string;DateTime:
TDateTime):
string;//按指定格式输出日期时间
例如:
formatDatetime(‘yyyy-mm-dd’,now);formatDatetime(‘hh:
mm:
ss’,now);
8.自定义过程
(1)在type下声明:
procedure<过程名>(<参数列表>);
(2)将光标移动定位在过程声明中,按Ctrl+Shift+C,实现自动生成部分过程框架。
procedure<过程名>(<参数列表>)
<局部变量声明>;
begin
<过程体语句>;
end;
(3)自定义过程的调用:
过程名(<实参表>);
9.自定义函数
(1)函数不用声明;
(2)function<函数名>[(<参数列表>)]:
<返回类型>;
<局部变量声明>;
begin
<函数语句>;
end;
(3)自定义函数的调用:
函数名(实参表);
10.对话框函数MessageDlg
(1)<变量>:
=MessageDlg(‘信息内容’,类型,[按钮组],HelpCex);
(2)类型:
mtWarning含有感叹号符号的警告对话框
mtError含有红色差号符号的错误对话框
mtInformation含有蓝色i符号的信息对话框
mtConfirmation含有蓝色?
符号的确认对话框
mtCustom不含图标的一般对话框,对话框的标题是程序的名称
按钮组:
mbYesYes按钮,函数返回mrYes或6
mbNoNo按钮,函数返回mrNo或7
mbOkOk按钮,函数返回mrOk或1
mbCancelCancel按钮,函数返回mrCancel或2
mbHelpHelp按钮
mbAbortAbort按钮,函数返回mrAbort或3
mbRetryRetry按钮,函数返回mrRetry或4
mbIgnoreIgnore按钮,函数返回mrIgnore或5
mbAllAll按钮,函数返回mrAll或8
mbNoToAllNoToAll按钮,函数返回mrNoToAll或9
mbYesToAllYesToAll按钮,函数返回mrYesToAll或10
HelpCtx指定当用户单击“Help”按钮或键时,现实的帮助主题。
例如:
ifMessageDlg('您确定要关闭窗口吗?
',mtConfirmation,[mbYes,mbNo],0)=mryesthen
11..基本知识点
(1)if(keyin['0','1'..'9',#13,#8])then//判断按下的是否为数字键、回车键和退格键
#0表示没有任何内容
#32表示空格
(2)Delphi中Randomize方法用来随机初始化数据。
(3)Label的Transparent属性用来设置Label的显示方式是否透明显示。
(4)StringGrid属性Cells【A,B】,其中A控制列,B控制行。
(5)MessageBox显示消息:
MessageBox(句柄,消息,消息框名,类型)
例如:
MessageBox(0,PChar(‘你好’+edit1.text),‘欢迎你’,MB_OK)
MessageBox(0,PChar(‘你好’+edit1.text),‘提示’,MB_ICONASTERISKandMB_ICONINFORMATION)//提示框
MessageBox(0,PChar(‘密码不能为空!
’),‘警告’,MB_ICONEXCLAMATION)//警告框
12.制作闪现窗体
在Project->option中将闪现窗体设置为Availableforms,之后显示的主窗体设置为Auto-createforms,并在主窗体的form的create事件中加入以下代码:
(1)先声明一个闪现窗体的变量:
如About:
=TForm2;
主窗体代码:
About:
=TForm2.Create(Application);//生成闪现窗体
About.show;//显示闪现窗体
(2)闪现窗体加入一个Timer事件,并在Timer的Timer事件中加入下面代码:
close;//关闭窗体
Release;//释放变量
注意:
可用Timer的Interval控制闪现窗体出现的事件,以毫秒为单位。
13.SavaDialog组件
(1)过滤文件:
Filter
(2)保存文件默认后缀名DefaultExt属性填写后缀名,注意不要加‘.’;
(3)保存代码:
ifsavedialog1.Executethen
begin
memo1.Lines.SaveToFile(form1.SaveDialog1.FileName);
application.MessageBox('文件保存成功!
','提示!
',64);
end;
14.复制、移动文件
(1)复制文件
CopyFile('d:
\db\123.txt','f:
\db\123.txt',False);
WinExec('cmd/ccopyd:
\db\123.txtf:
\db\123.txt',0);
使用以上函数目标目录必须存在!
CopyFile(源文件路径,目标文件路径,False(存在覆盖)True(存在不覆盖));
(2)移动正在使用的文件
MoveFileEx(所要移动的文件路径(及文件名),目标文件的路径(和文件名),移动标记);
移动标记取值:
MOVEFILE_REPLACE_EXISTING=$00000001;//覆盖已经存在的文件,来源文件和目标不能在同一目录
MOVEFILE_COPY_ALLOWED=$00000002;//如果目标文件被移动到不同的卷上,则函数通过拷贝后删除来源文件的方法来模拟移动文件
MOVEFILE_DELAY_UNTIL_REBOOT=$00000004;//在系统重新启动后再执行移动操作,这个参数只能被拥有管理员权限或localsystem权限的程序使用,不能和MOVEFILE_COPY_ALLOWED一起使用。
MOVEFILE_WRITE_THROUGH=$00000008;//这个标记允许函数在执行完文件移动后才返回,否则不等文件移动完毕后就直接返回。
如果设置了MOVEFILE_DELAY_UNTIL_REBOOT标记,则MOVEFILE_WRITE_THROUGH标记将被忽略。
MOVEFILE_CREATE_HARDLINK=$00000010;//系统保留,以供将来使用。
MOVEFILE_FAIL_IF_NOT_TRACKABLE=$00000020;//如果来源文件为1个link文件,但是文件在移动后不能够被tracked,则函数执行失败。
如果目标文件在一个fat格式的文件系统上,则上述情况可以发生。
该参数不支持NT系统。
15.在系统菜单中添加菜单项
i:
=GetSystemMenu(Handle,False);//获取窗体的句柄
AppendMenu(i,MF_SEPARATOR,0,nil);//添加分割线
AppendMenu(i,MF_STRING,100,'我的菜单(&E)');//添加菜单项
16.创建和删除文件夹
DirectoryExists(路径);//判断文件夹是否存在
ForceDirectories(路径);//创建文件夹
mkdir(路径);//创建一个指定的目录
RmDir(路径);//删除文件夹
17.建立临时文件
functionGetTempFileName(建立临时文件路径,临时文件的前缀(识别前3位),用于建立临时文件的号码,返回建立的临时文件名称)
例如:
GetTempFileName(PChar(dir),'TEST',0,Temp);//生成临时文件名
18.把文件删除到回收站(注意:
需要引用shellAPI单元)
首先:
var
SHFile:
SHFILEOPSTRUCT;
withSHFiledo
begin
Wnd:
=0;//拥有者窗口句柄
wFunc:
=FO_DELETE;//文件操作功能,可选项FO_COPY、FO_DELETE、FO_MOVE、FO_RENAME
pFrom:
=PChar(DFile);//源文件
//pto目标文件
fFlags:
=FOF_ALLOWUNDO;//文件控制标志
//fAnyOperationsAborted用户是否中断操作
//hNameMapping指向一个SHNAMEMAPPING结构的指针
lpszProgressTitle:
='将文件删除到回收站';//进程标题
end;
SHFileOperation(SHFile);//删除文件,需要引用shellAPI单元
19.引用动态链接库(DLL文件使用)
(1)静态引用动态链接库
在implementation后
function名称():
Integer;stdcall;external'XX.dll';
(2)动态引用动态链接库
1)LoadLibrary函数用于载入指定的动态链接库,并将它映射到当期进程使用的地址空间。
函数原型如下:
HINSTANCELoadLibrary(LPCTSTRlpLibFileName);
lpLibFileName:
指定要载入的动态链接库的名称;
2)FreeLibrary函数用于释放那些由应用程序明确装载的DLL文件。
函数原型如下:
BOOLFreeLibrary(HMODULEhLibModule);
hLibModule:
要释放的一个库的句柄;
注意:
1个LoadLibrary函数对应1个FreeLibrary函数。
3)GetProcAddress函数用于获取DLL导出函数的地址,使用返回的函数指针调用DLL函数。
函数原型如下:
FARPROCGetProcAddress(HMODULEhModule,LPCSTRlpProcName);
hModule:
包含此函数的DLL模块的句柄;
lpProcName:
包含函数名以NULL结尾的字符串,或者是指定函数的序数值。
例子:
Tgetn=function:
pchar;stdcall;//在var前声明
procedureTForm1.Button1Click(Sender:
TObject);
var
onehandle:
THandle;
fun:
Tgetn;
begin
onehandle:
=loadlibrary('getname.dll');
try
ifonehandle<>0then
@fun:
=GetProcAddress(onehandle,'getnames');
ifnot(@fun=nil)then
label1.Caption:
=fun;
finally
freelibrary(onehandle);
end;
end;
20.清空回收站
首先定义常量:
const
HERB_NOCONFIRMATION=$00000001;
SHERB_NOPROGRESSUI=$00000002;
SHERB_NOSOUND=$00000004;
然后引入静态链接库:
(需要添加引用shellAPI单元)
functionSHEmptyRecycleBinA(Wnd:
HWND;str:
PChar;WRD:
DWORD):
Integer;stdcall;external'SHell32.dll';
最后:
SHEmptyRecycleBinA(application.handle,'',SHERB_NOCONFIRMATION+SHERB_NOPROGRESSUI+SHERB_NOSOUND);
21.FileListBox1.Items.Strings[i]用于得到FileListBox中指定的文件名。
22.更改目录
(1)GetDir(D:
Byte;varS:
string);//获取当前路径
D:
目标磁盘。
取值如下:
0:
default;1:
A;2:
B;3:
C;
S:
存储路径的字符串;
(2)ChDir(constS:
string);//改变当前路径
S:
改变后的路径
(3)ExtractFilePath(OpenDialog1.FileName);获取打开文件路径
ExtractFileName(OpenDialog1.FileName);获取打开的文件名
23.对ini文件进行操作(需要引用IniFiles单元)
新建ini文件
[PersionInfo]
Name=赵志勇
var
ini:
TIniFile;;
ini:
=TIniFile.Create(文件路径+'\文件名.ini');//打开ini文件
edit1.Text:
=ini.ReadString('PersionInfo','Name','赵志勇');//读取文件
ini.WriteString('PersionInfo','Name',Edit1.Text);//修改文件
读取或修改ini文件后都需要释放资源:
FreeAndNil(ini);
24.获取窗口文本
intGetWindowText(HWNDhwnd,LPTSTRlpString,intnMaxCount);
hwnd:
欲获取文字的窗口句柄
lpString:
预定义的一个缓冲区,至少有nMaxCount个字符大小。
nMaxCount:
lpString缓冲区的长度。
例如:
GetWindowText(H_Window,@text,255)
25.StrPas(字符串)函数
StrPas(字符串);//将零终止字符串转换为Pascal类型字符串。
26.在程序中调用.hlp文件
WinHelp(handle,path,命令参数,附加数据(与命令参数有关));
例如:
WinHelp(Self.Handle,PChar(dir+'\help.hlp'),HELP_CONTENTS,0);
27.获取硬盘序列号
BoolGetVolumeInformation(LPCSTRlpRootPathName,LPTSTRlpVolumeNameBuffer,
DWORDnVolumeNameSize,LPDWORDlpVolumeSerialNumber,
LPDWORDlpMaximumComponentLength,LPDWORDlpFileSystemFlags,
LPTSTRlpFileSystemNameBuffer,DWORDnFileSystemNameSize)
lpRootPathName:
欲获取信息卷的根路径;
lpVolumeNameBuffer:
用于装载卷名的一个字符串;(nil)
nVolumeNameSize:
lpVolumeNameBuffer字符串的长度;(sizeof())
lpVolumeSerialNumber:
用于装载磁盘卷序列号的变量;
lpMaximumComponentLength:
指定一个变量,用于装载文件名每一部分的长度;
lpFileSystemFlags:
用于装载一个或多个二进制位标志的长度;
lpFileSystemNameBuffer:
指定一个缓冲区,用于装载系统的名称;(nil)
nFileSystemNameSize:
lpFileSystemNameBuffer字符串的长度。
(0)
例如:
functionGet_HD_Serial(constDriverdir:
Char):
string;
var
nu:
DWORD;
vf:
DWORD;
volumeinfo:
array[0..MAX_PATH]ofChar;
V_n:
DWORD;
begin
GetVolumeInformation(PChar(Driverdir+':
\'),nil,SizeOf(volumeinfo),@V_n,nu,vf,nil,0);
Result:
=Format('V_S:
%8.0X',[V_n]);
end;
28.判断驱动器的类型
functionGetDriveType(lpRootPathName:
PChar):
UNIT;stdcall;
lpRootPathName:
驱动器盘符。
该函数返回一个整型标记符:
DRIVE_UNKNOWN(0):
驱动器盘符无效;
DRIVE_NO_ROOT_DIR
(1):
这不是一个有效的驱动器;
DRIVE_REMOVABLE
(2):
可移动驱动器;
DRIVE_FIXED(3):
不可移动(本地)驱动器;
DRIVE_REMOTE(4):
;网络(远程)驱动器;
DRIVE_CDROM(5):
;光盘驱动器;
DRIVE_RAMDISK(6):
RAM虚拟驱动器;
29.取消磁盘共享
使用DOS命令“NETSHARE盘符$/DEL”来实现;
functionWinExec(lpCmdLine:
LPCSTR;uCmdShow:
UNIT):
UNIT;stdcall;
lpCmdLine:
表示命令行;
uCmdShow:
表示是否显示窗口,如果为SW_Show将显示窗口,为SW_Hide隐藏窗口。
例如:
取消C盘共享:
inExec('cmd.exe/kNETSHAREC$/DEL',SW_SHOW);
30.检测驱动器容量
BOOLGetDiskFreeSpace(LPCTSTRlpRootPathName,LPDWORDlpSectorsPerCluster,
LPDWORDlpBytesPerSector,LPDWORDlpNumberOfFreeCluster,
LPDWORDlpTotalNumberOfClusters);
lpRootPathName:
不包括卷名的一个磁盘根路径;(C:
\)
lpSectorsPerCluster:
用于装载一个簇内扇区数的变量;(A)
lpBytesPerSector:
用于装载一个扇区内字节数的变量;(B)
lpNumberOfFreeCluster:
用于装载磁盘上剩余簇数的变量;(C)
lpTotalNumberOfClusters:
用于装载磁盘上总簇数的变量。
(D)
磁盘大小=A*B*D;磁盘剩余空间=A*B*C。
(单位:
B)
例如:
GetDiskFreeSpace(‘C:
\’,sec1,byt1,cl1,cl2);
31.格式化磁盘
需要先静态引用动态链接库:
functionformatdrive(hwnd:
HWND;drive:
Word;formatid:
Word;options:
Word):
LongIntstdcall;
external'shell32.dll'name'SHFormatDrive';
然后才可以使用。
functionFormatDrive(hwnd:
HWND;drive,formatid,options:
word):
longintstdcall;
hwnd:
调用该函数的窗口句柄;
drive:
格式化的目标磁盘,从0开始;
formatid:
格式化ID;
options:
格式化选项。
32.显示、隐藏鼠标
intShowCursor(BOOLbShow);
bShow:
该参数为True显示鼠标指针,False隐藏鼠标指针。
例如:
ShowCursor(False);//隐藏鼠标
ShowCursor(True);//显示鼠标
33.锁定计算机
LockWorkStation;//锁定计算机
34.检测系统启动模式
intGetSystemMetrics(intnIndex);//用于得到被定义的系统数据或者系统配置信息
nIndex取值:
SM_CLEANBOOT:
返回系统启动方式
返回值0:
正常启动
1:
安全模式启动
2:
网络安全模式启动
SM_CMOUSEBUTTONS:
返回值为系统支持的鼠标键数,返回0则表示系统没有安装鼠标。
35.设置桌面颜色
BOOLWINAPISetSysColors(intcElements,CONSTINT*lpaElements,CONSTCOLORREF*lpaRgbValues);
cElements:
欲改变对象的数量;
lpaElements:
按引用传递。
这是1个整数数组的第1个元素,每个条目都包含1个常数,指定一个Windows显示对象,可参考GetSysColor函数。
lpaRgbValues:
按引用传递。
这是RGB值数组的第一个元素。
该数组用于设置lpSysColor数组中的