文档库 最新最全的文档下载
当前位置:文档库 › Delphi 中的消息钩子函数和Windows子类处理

Delphi 中的消息钩子函数和Windows子类处理

Delphi 中的消息钩子函数和Windows子类处理
Delphi 中的消息钩子函数和Windows子类处理

首先我们先看一下安装HOOK的函数:

HHOOK SetWindowsHookEx(

int idHook,//要安装的HOOK的类型

HOOKPROC lpfn, //HOOK的回调函数

HINSTANCE hMod,//进程

DWORD dwThreadId //程序的线程,如果为0则是全局HOOK

);

熟悉了SetWindowsHookEx函数,我们就能开始我们的工作,挂钩进程。

首先打开Delphi,创建一个DLL工程(DLL Wizard)。然后创建一个新的单元(Unit1)。

首先在单元的interface 下面声明要用到的函数。

var

OldHook:HHOOK;

Histance:HISTANCE;

OldProc:FARPROC;

我们的第一个函数是安装HOOK,让我们看一下代码:

Function SetHook:Boolean;stdcall;

begin

OldHook:=SetWindowsHookEx(WH_KEYBOARD,@HookProc,Histance,0);

if (OldHook=0) then exit else Result:=True;

end;

这样的话就安装一个全局的键盘HOOK,HOOK的方法还有很多,在此就不一一列举了。下面介绍一下回调函数:

Function HookProc(nCode,wParam,lParam:Integer);Integer;stdcall;

begin

Result:=CallNextHookEx(OldHook,nCode,wParam,lParam);

end;

这样的话就完成了对进程的挂钩。可是挂上钩我们的工作并没结束,相反,我们的工

作才刚刚开始。钩子的作用是帮我们把DLL注入到别人的进程空间。现在我们的DLL已经在别人的进程空间内。所以,我们就可以做我们想做的事。

下面介绍一下Windows的子类化处理。

大家都知道,在windows里不管你做了什么事,都会向windows发送一条消息,然后由Windows作出相应的处理后才会返回给传送消息的应用程序。

那大家会问:“HOOK不是已经拦截了windows消息了吗?”

是啊,那也要看是拦截了什么消息,就如上面我们写的WH_KEYBOARD,我们拦截了键盘

消息,我们可以在按下任何一个按键的时候做出处理。消息的种类有很多。

可是我们今天要讲的是windows的子类化处理,这又是一门新的技术。

不废话了,这就开始。^_^

相信大家都见过两这个API:GetWindowsLong 和SetWindowLong;

可能你们会说,这些不是处理窗口消息的吗?对,这就是我们要用到的API。

接下来让我们看一下这些API的参数。

LONG GetWindowLong(

HWND hWnd, //窗体的句柄

int nIndex //欲取回的信息,可参照下表

);

nIndex的值可以是下列任何一个

GWL_EXSTYLE 扩展窗口样式

GWL_STYLE 窗口样式

GWL_WNDPROC 该窗口的窗口函数的地址

GWL_HINSTANCE 拥有窗口的实例的句柄

GWL_HWNDPARENT 该窗口之父的句柄。不要用SetWindowWord来改变这个值

GWL_ID 对话框中一个子窗口的标识符

GWL_USERDATA 含义由应用程序规定

DWL_DLGPROC 这个窗口的对话框函数地址

DWL_MSGRESULT 在对话框函数中处理的一条消息返回的值

DWL_USER 含义由应用程序规定

也许大家会注意到GWL_WNDPROC 这个参数。没错,我们子类处理就是要用到这个参数。代码如下:

OldProc:=GetWindowLong(hWnd,GWL_WNDPROC);

这样我们的OldProc就指向窗体的窗口函数地址;

既然得到了窗口函数地址,那么就修改到我们自定义的消息处理地址里吧。

下面要用到SetWindowLong函数了。

LONG SetWindowLong(

HWND hWnd, //指定窗口句柄

int nIndex, //和GetWindowLong的nIndex一样

LONG dwNewLong //新的消息处理地址

);

代码如下:

SetWindowLong(hWnd,GWL_WNDPROC,Longint(@WinProc));

这样就把指定窗体的消息转到了我们的函数内执行;

回调函数如下:

Function WinProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;

begin

Result:=CallWindowProc(OldProc,Hwnd,Msg,wParam,lParam);

end;

这里的Msg就是窗口的消息,后面赋上消息表。

小节:文章写到这里,相信大家应该明白HOOK和子类是什么回事吧。下面再解释一下

为什么不在HOOK里处理消息。前面已经提到,HOOK是帮助我们把DLL注入别人的进程。而windows子类处理只能在进程内处理消息,所以只有我们到了别人的进程空间内,才

能做出消息屏蔽的动作。这样说大家都能明白了吧。

好了,就不废话了。下面赋上源代码。希望大家多多支持!^_^

(复制就可以用的哦)

##########################################################################

unit Unit1;

interface

uses windows;

var

OldHook:HHOOK; //用来保存HOOK的返回值

OldProc:FARPROC; //用来指向窗口消息

Function SetHook:Boolean;stdcall;

Function HookProc(nCode,wParam,lParam:Integer):Integer;stdcall;

Function WinProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;

implementation

{############################################################################## #####}

//安装HOOK

Function SetHook:Boolean;stdcall;

var

Histance:Cardinal;

begin

//安装HOOK

OldHook:=SetWindowsHookEx(WH_KEYBOARD,@HookProc,Histance,0);

if (OldHook=0) then exit else Result:=True;

end;

{############################################################################## #####}

//HOOK回调函数

Function HookProc(nCode,wParam,lParam:Integer):Integer;stdcall;

var

WinStr:HWND;

begin

//设置热键

if (wParam=VK_F12) then

begin

WinStr:=FindWindow(nil,'窗口的标题文字');

OldProc:=FARPROC(GetWindowLong(WinStr,GWL_WNDPROC));

SetWindowLong(WinStr,GWL_WNDPROC,Longint(@WinProc));

end;

//将HOOK传递给Windows处理

Result:=CallNextHookEx(OldHook,nCode,wParam,lParam);

end;

{############################################################################## #####}

//自定义Windows消息处理函数

Function WinProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;

begin

{在这做出对消息的处理

case Msg of

WM_ACTIVATEAPP:exit;

WM_ACTIVATE:exit;

WM_KILLFOCUS:exit;

WM_SETFOCUS:exit;

end;

上面这些消息是窗口失去焦点和获得焦点的屏蔽

}

//将窗口消息传递给Windows处理

Result:=CallWindowProc(OldProc,Hwnd,Msg,wParam,lParam);

end;

end.

##########################################################################

附录:消息类型(搜集整理于互联网上)

##########################################################################

WM_NULL = $0000;

WM_CREATE = $0001;

应用程序创建一个窗口

WM_DESTROY = $0002;

一个窗口被销毁

WM_MOVE = $0003;

移动一个窗口

WM_SIZE = $0005;

改变一个窗口的大小

WM_ACTIVATE = $0006;

一个窗口被激活或失去激活状态;

WM_SETFOCUS = $0007;

获得焦点后

WM_KILLFOCUS = $0008;

失去焦点

WM_ENABLE = $000A;

改变enable状态

WM_SETREDRAW = $000B;

设置窗口是否能重画

WM_SETTEXT = $000C;

应用程序发送此消息来设置一个窗口的文本

WM_GETTEXT = $000D;

应用程序发送此消息来复制对应窗口的文本到缓冲区

WM_GETTEXTLENGTH = $000E;

得到与一个窗口有关的文本的长度(不包含空字符)

WM_PAINT = $000F;

要求一个窗口重画自己

WM_CLOSE = $0010;

当一个窗口或应用程序要关闭时发送一个信号

WM_QUERYENDSESSION = $0011;

当用户选择结束对话框或程序自己调用ExitWindows函数

WM_QUIT = $0012;

用来结束程序运行或当程序调用postquitmessage函数

WM_QUERYOPEN = $0013;

当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

WM_ERASEBKGND = $0014;

当窗口背景必须被擦除时(例在窗口改变大小时)

WM_SYSCOLORCHANGE = $0015;

当系统颜色改变时,发送此消息给所有顶级窗口

WM_ENDSESSION = $0016;

当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,

通知它对话是否结束

WM_SYSTEMERROR = $0017;

WM_SHOWWINDOW = $0018;

当隐藏或显示窗口是发送此消息给这个窗口

WM_ACTIVATEAPP = $001C;

发此消息给应用程序哪个窗口是激活的,哪个是非激活的;

WM_FONTCHANGE = $001D;

当系统的字体资源库变化时发送此消息给所有顶级窗口

WM_TIMECHANGE = $001E;

当系统的时间变化时发送此消息给所有顶级窗口

WM_CANCELMODE = $001F;

发送此消息来取消某种正在进行的摸态(操作)

WM_SETCURSOR = $0020;

如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口

WM_MOUSEACTIVATE = $0021;

当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

WM_CHILDACTIVATE = $0022;

发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小WM_QUEUESYNC = $0023;

此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序

分离出用户输入消息

WM_GETMINMAXINFO = $0024;

此消息发送给窗口当它将要改变大小或位置;

WM_PAINTICON = $0026;

发送给最小化窗口当它图标将要被重画

WM_ICONERASEBKGND = $0027;

此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画

WM_NEXTDLGCTL = $0028;

发送此消息给一个对话框程序去更改焦点位置

WM_SPOOLERSTATUS = $002A;

每当打印管理列队增加或减少一条作业时发出此消息

WM_DRAWITEM = $002B;

当button,combobox,listbox,menu的可视外观改变时发送

此消息给这些空件的所有者

WM_MEASUREITEM = $002C;

当button, combo box, list box, list view control, or menu item 被创建时

发送此消息给控件的所有者

WM_DELETEITEM = $002D;

当the list box 或combo box 被销毁或当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息

WM_VKEYTOITEM = $002E;

此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息

WM_CHARTOITEM = $002F;

此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR 消息

WM_SETFONT = $0030;

当绘制文本时程序发送此消息得到控件要用的颜色

WM_GETFONT = $0031;

应用程序发送此消息得到当前控件绘制文本的字体

WM_SETHOTKEY = $0032;

应用程序发送此消息让一个窗口与一个热键相关连

WM_GETHOTKEY = $0033;

应用程序发送此消息来判断热键与某个窗口是否有关联

WM_QUERYDRAGICON = $0037;

此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

WM_COMPAREITEM = $0039;

发送此消息来判定combobox或listbox新增加的项的相对位置

WM_GETOBJECT = $003D;

WM_COMPACTING = $0041;

显示内存已经很少了

WM_WINDOWPOSCHANGING = $0046;

发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

WM_WINDOWPOSCHANGED = $0047;

发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数

WM_POWER = $0048;(适用于16位的windows)

当系统将要进入暂停状态时发送此消息

WM_COPYDATA = $004A;

当一个应用程序传递数据给另一个应用程序时发送此消息

WM_CANCELJOURNAL = $004B;

当某个用户取消程序日志激活状态,提交此消息给程序

WM_NOTIFY = $004E;

当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口WM_INPUTLANGCHANGEREQUEST = $0050;

当用户选择某种输入语言,或输入语言的热键改变

WM_INPUTLANGCHANGE = $0051;

当平台现场已经被改变后发送此消息给受影响的最顶级窗口

WM_TCARD = $0052;

当程序已经初始化windows帮助例程时发送此消息给应用程序

WM_HELP = $0053;

此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就

发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

WM_USERCHANGED = $0054;

当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体

设置信息,在用户更新设置时系统马上发送此消息;

WM_NOTIFYFORMAT = $0055;

公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构

在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信

WM_CONTEXTMENU = $007B;

当用户某个窗口中点击了一下右键就发送此消息给这个窗口

WM_STYLECHANGING = $007C;

当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口WM_STYLECHANGED = $007D;

当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口

WM_DISPLAYCHANGE = $007E;

当显示器的分辨率改变后发送此消息给所有的窗口

WM_GETICON = $007F;

此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;

WM_SETICON = $0080;

程序发送此消息让一个新的大图标或小图标与某个窗口关联;

WM_NCCREATE = $0081;

当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;

WM_NCDESTROY = $0082;

此消息通知某个窗口,非客户区正在销毁

WM_NCCALCSIZE = $0083;

当某个窗口的客户区域必须被核算时发送此消息

WM_NCHITTEST = $0084;//移动鼠标,按住或释放鼠标时发生

WM_NCPAINT = $0085;

程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;

WM_NCACTIVATE = $0086;

此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;WM_GETDLGCODE = $0087;

发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件

通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它WM_NCMOUSEMOVE = $00A0;

当光标在一个窗口的非客户区内移动时发送此消息给这个窗口//非客户区为:窗体的标题栏及窗

的边框体

WM_NCLBUTTONDOWN = $00A1;

当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息

WM_NCLBUTTONUP = $00A2;

当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;

WM_NCLBUTTONDBLCLK = $00A3;

当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息

WM_NCRBUTTONDOWN = $00A4;

当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息

WM_NCRBUTTONUP = $00A5;

当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息

WM_NCRBUTTONDBLCLK = $00A6;

当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息

WM_NCMBUTTONDOWN = $00A7;

当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_NCMBUTTONUP = $00A8;

当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_NCMBUTTONDBLCLK = $00A9;

当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息

WM_KEYFIRST = $0100;

WM_KEYDOWN = $0100;

//按下一个键

WM_KEYUP = $0101;

//释放一个键

WM_CHAR = $0102;

//按下某键,并已发出WM_KEYDOWN,WM_KEYUP消息

WM_DEADCHAR = $0103;

当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口

WM_SYSKEYDOWN = $0104;

当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;

WM_SYSKEYUP = $0105;

当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口

WM_SYSCHAR = $0106;

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口WM_SYSDEADCHAR = $0107;

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口WM_KEYLAST = $0108;

WM_INITDIALOG = $0110;

在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务WM_COMMAND = $0111;

当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译WM_SYSCOMMAND = $0112;

当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息WM_TIMER = $0113; //发生了定时器事件

WM_HSCROLL = $0114;

当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件

WM_VSCROLL = $0115;

当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的

控件WM_INITMENU = $0116;

当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单

WM_INITMENUPOPUP = $0117;

当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部

WM_MENUSELECT = $011F;

当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

WM_MENUCHAR = $0120;

当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;

WM_ENTERIDLE = $0121;

当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待

WM_MENURBUTTONUP = $0122;

WM_MENUDRAG = $0123;

WM_MENUGETOBJECT = $0124;

WM_UNINITMENUPOPUP = $0125;

WM_MENUCOMMAND = $0126;

WM_CHANGEUISTATE = $0127;

WM_UPDATEUISTATE = $0128;

WM_QUERYUISTATE = $0129;

WM_CTLCOLORMSGBOX = $0132;

在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

WM_CTLCOLOREDIT = $0133;

当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色

WM_CTLCOLORLISTBOX = $0134;

当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色

WM_CTLCOLORBTN = $0135;

当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

WM_CTLCOLORDLG = $0136;

当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色

WM_CTLCOLORSCROLLBAR= $0137;

当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色

WM_CTLCOLORSTATIC = $0138;

当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色

WM_MOUSEFIRST = $0200;

WM_MOUSEMOVE = $0200;

// 移动鼠标

WM_LBUTTONDOWN = $0201;

//按下鼠标左键

WM_LBUTTONUP = $0202;

//释放鼠标左键

WM_LBUTTONDBLCLK = $0203;

//双击鼠标左键

WM_RBUTTONDOWN = $0204;

//按下鼠标右键

WM_RBUTTONUP = $0205;

//释放鼠标右键

WM_RBUTTONDBLCLK = $0206;

//双击鼠标右键

WM_MBUTTONDOWN = $0207;

//按下鼠标中键

WM_MBUTTONUP = $0208;

//释放鼠标中键

WM_MBUTTONDBLCLK = $0209;

//双击鼠标中键

WM_MOUSEWHEEL = $020A;

当鼠标轮子转动时发送此消息个当前有焦点的控件

WM_MOUSELAST = $020A;

WM_PARENTNOTIFY = $0210;

当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

WM_ENTERMENULOOP = $0211;

发送此消息通知应用程序的主窗口that已经进入了菜单循环模式

WM_EXITMENULOOP = $0212;

发送此消息通知应用程序的主窗口that已退出了菜单循环模式

WM_NEXTMENU = $0213;

WM_SIZING = 532;

当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们

WM_CAPTURECHANGED = 533;

发送此消息给窗口当它失去捕获的鼠标时;

WM_MOVING = 534;

当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;

WM_POWERBROADCAST = 536;

此消息发送给应用程序来通知它有关电源管理事件;

WM_DEVICECHANGE = 537;

当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

WM_IME_STARTCOMPOSITION = $010D;

WM_IME_ENDCOMPOSITION = $010E;

WM_IME_COMPOSITION = $010F;

WM_IME_KEYLAST = $010F;

WM_IME_SETCONTEXT = $0281;

WM_IME_NOTIFY = $0282;

WM_IME_CONTROL = $0283;

WM_IME_COMPOSITIONFULL = $0284;

WM_IME_SELECT = $0285;

WM_IME_CHAR = $0286;

WM_IME_REQUEST = $0288;

WM_IME_KEYDOWN = $0290;

WM_IME_KEYUP = $0291;

WM_MDICREATE = $0220;

应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口

WM_MDIDESTROY = $0221;

应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口

WM_MDIACTIVATE = $0222;

应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;

WM_MDIRESTORE = $0223;

程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小

WM_MDINEXT = $0224;

程序发送此消息给MDI客户窗口激活下一个或前一个窗口

WM_MDIMAXIMIZE = $0225;

程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;

WM_MDITILE = $0226;

程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

WM_MDICASCADE = $0227;

程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

WM_MDIICONARRANGE = $0228;

程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

WM_MDIGETACTIVE = $0229;

程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄

WM_MDISETMENU = $0230;

程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

WM_ENTERSIZEMOVE = $0231;

WM_EXITSIZEMOVE = $0232;

WM_DROPFILES = $0233;

WM_MDIREFRESHMENU = $0234;

WM_MOUSEHOVER = $02A1;

WM_MOUSELEAVE = $02A3;

WM_CUT = $0300;

程序发送此消息给一个编辑框或combobox来删除当前选择的文本

WM_COPY = $0301;

程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板

WM_PASTE = $0302;

程序发送此消息给editcontrol或combobox从剪贴板中得到数据

WM_CLEAR = $0303;

程序发送此消息给editcontrol或combobox清除当前选择的内容;

WM_UNDO = $0304;

程序发送此消息给editcontrol或combobox撤消最后一次操作

WM_RENDERFORMAT = $0305;

WM_RENDERALLFORMATS = $0306;

WM_DESTROYCLIPBOARD = $0307;

当调用ENPTYCLIPBOARD函数时发送此消息给剪贴板的所有者

WM_DRAWCLIPBOARD = $0308;

当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来

显示剪贴板的新内容;

WM_PAINTCLIPBOARD = $0309;

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;

WM_VSCROLLCLIPBOARD = $030A;

WM_SIZECLIPBOARD = $030B;

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;

WM_ASKCBFORMATNAME = $030C;

通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字

WM_CHANGECBCHAIN = $030D;

当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;

WM_HSCROLLCLIPBOARD = $030E;

此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;

WM_QUERYNEWPALETTE = $030F;

此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板

WM_PALETTEISCHANGING= $0310;

当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序

WM_PALETTECHANGED = $0311;

此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板

WM_HOTKEY = $0312;

当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息

WM_PRINT = 791;

应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;

WM_PRINTCLIENT = 792;

WM_HANDHELDFIRST = 856;

WM_HANDHELDLAST = 863;

WM_PENWINFIRST = $0380;

WM_PENWINLAST = $038F;

WM_COALESCE_FIRST = $0390;

WM_COALESCE_LAST = $039F;

WM_DDE_FIRST = $03E0;

WM_DDE_INITIATE = WM_DDE_FIRST + 0;

一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;

WM_DDE_TERMINATE = WM_DDE_FIRST + 1;

一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;

WM_DDE_ADVISE = WM_DDE_FIRST + 2;

一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它WM_DDE_UNADVISE = WM_DDE_FIRST + 3;

一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项

WM_DDE_ACK = WM_DDE_FIRST + 4;

此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息

WM_DDE_DATA = WM_DDE_FIRST + 5;

一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项

WM_DDE_REQUEST = WM_DDE_FIRST + 6;

一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;

WM_DDE_POKE = WM_DDE_FIRST + 7;

一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;WM_DDE_EXECUTE = WM_DDE_FIRST + 8;

一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;

WM_DDE_LAST = WM_DDE_FIRST + 8;

WM_APP = $8000;

WM_USER = $0400;

此消息能帮助应用程序自定义私有消息;

/////////////////////////////////////////////////////////////////////

通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows 95公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。

按扭

B N _

C L I C K E

D //用户单击了按钮

B N _ D I S A B L E //按钮被禁止

B N _ D O U B L E

C L I C K E

D //用户双击了按钮

B N _ H I L I T E //用户加亮了按钮

B N _ PA I N T按钮应当重画

B N _ U N H I L I T E加亮应当去掉

组合框

C B N _ C L O S E U P组合框的列表框被关闭

C B N _

D B L C L K用户双击了一个字符串

C B N _

D R O P D O W N组合框的列表框被拉出

C B N _ E

D I T C H A N G E用户修改了编辑框中的文本C B N _

E D I T U P D AT E编辑框内的文本即将更新

C B N _ E R R S PA C E组合框内存不足

C B N _ K I L L F O C U S组合框失去输入焦点

C B N _ S E L C H A N G E在组合框中选择了一项

C B N _ S E L E N

D C A N C

E L用户的选择应当被取消C B N _ S E L E N D O K用户的选择是合法的

C B N _ S E T F O C U S组合框获得输入焦点

编辑框

E N _ C H A N G E编辑框中的文本己更新

E N _ E R R S PA C E编辑框内存不足

E N _ H S C R O L L用户点击了水平滚动条

E N _ K I L L

F O C U S编辑框正在失去输入焦点

E N _ M A X T E X T插入的内容被截断

E N _ S E T

F O C U S编辑框获得输入焦点

E N _ U P D AT E编辑框中的文本将要更新

E N _ V S C R O L L用户点击了垂直滚动条消息含义

列表框

L B N _ D B L C L K用户双击了一项

L B N _ E R R S PA C E列表框内存不够

L B N _ K I L L F O C U S列表框正在失去输入焦点

L B N _ S E L C A N C E L选择被取消

L B N _ S E L C H A N G E选择了另一项

L B N _ S E T F O C U S列表框获得输入焦点

Delphi函数清单

[标准函数和过程] 首部 procedure Abort;$[SysUtils 功能引起放弃的意外处理。 说明不显示任何错误信息。 首部 function Abs(N: ): ;$[System 功能返回参数N的绝对值。 说明函数结果与参数有相同类型,参数可以是整型也可以是浮点型。 ## Abs(-12) = 12;Abs(-12.03) = 12.03 首部 procedure AddExitProc(Proc: TProcedure);$[SysUtils 功能将旧版本某一过程添加到当前版本运行的库的结束过程表中。 说明只能向下兼容,不能用在当前使用版本的 首部 function Addr(X): Pointer;$[System 功能返回指定对象的内存地址。 说明地址运算符 @ 可以产生与Addr相同的结果。 首部 procedure AddTerminateProc(TermProc: TTerminateProc);$[SysUtils 功能将一过程添加到运行时库的终止过程表中。 说明 Delphi 在程序结束时将终止该程序的全部进程,可以终止的进程都放在终止过程表中,程序通过结束终止过程表所有的进程来实现终止全部进程的目的。 首部 function AdjustLineBreaks(const S: string): string;$[SysUtils 功能将给定字符串的行分隔符调整为Cr/Lf序列。 说明 首部 function AllocMem(Size: Cardinal): Pointer;$[SysUtils 功能在堆栈上分配给定大小为 Size字节的块,即在内存里开辟Size 大小的空间。 说明 Cardinal 0..4294967295 32位无符号整数 首部 function AnsiCompareFileName(const S1, S2: string): Integer;$[SysUtils 功能比较两个文件名的大小。不区分大小写。 说明条件返回值 S1 > S2 | > 0 S1 < S2 | < 0 S1 = S2 | = 0 首部 function AnsiCompareStr(const S1, S2: string): Integer;$[SysUtils 功能比较两个字符串的大小。要区分大小写。 说明参见AnsiCompareFileName。 首部 function AnsiCompareText(const S1, S2: string): Integer;$[SysUtils 功能返回两个字符串是否相同的状态。不区分大小写。 说明参见AnsiCompareFileName。 首部 function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):string;$[SysUtils 功能将引用字串转换成结束引语返回。 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiLastChar(const S: string): PChar;$[SysUtils 功能取参数S的最后一个字符,并转换成以null结束的字符串指针返回。 说明 ##AnsiLastChar(‘Sysoft’) = {‘t\0’}; 首部 function AnsiLowerCase(const S: string): string;$[SysUtils 功能将字符串S转换为小写返回。 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiLowerCaseFileName(const S: string): string;$[SysUtils 功能将文件名S转换成小写返回 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiPos(const Substr, S: string): Integer; $[SysUtils 功能返回子串Substr出现在主串S中的第一个位置。 说明 首部 function AnsiQuotedStr(const S: string; Quote: Char): string; $[SysUtils 功能返回引用字串的译文 说明 首部 function AnsiStrComp(S1, S2: PChar): Integer; $[SysUtils 功能比较两个指针字符串的大小。要区分大小写。 说明参见AnsiCompareFileName。

delphi数学模块函数、过程大全

function ArcCos(const X : Extended) : Extended; overload; function ArcCos(const X : Double) : Double; overload; function ArcCos(const X : Single) : Single; overload; function ArcSin(const X : Extended) : Extended; overload; function ArcSin(const X : Double) : Double; overload; function ArcSin(const X : Single) : Single; overload; function ArcTan2(const Y, X: Extended): Extended; procedure SinCos(const Theta: Extended; var Sin, Cos: Extended) register; function Tan(const X: Extended): Extended; function Cotan(const X: Extended): Extended; { 1 / tan(X), X <> 0 } function Secant(const X: Extended): Extended; { 1 / cos(X) } function Cosecant(const X: Extended): Extended; { 1 / sin(X) } function Hypot(const X, Y: Extended): Extended; { Sqrt(X**2 + Y**2) } function RadToDeg(const Radians: Extended): Extended; inline; { Degrees := Radians * 180 / PI } function RadToGrad(const Radians: Extended): Extended; inline; { Grads := Radians * 200 / PI } function RadToCycle(const Radians: Extended): Extended; inline; { Cycles := Radians / 2PI } function DegToRad(const Degrees: Extended): Extended; inline; { Radians := Degrees * PI / 180} function DegToGrad(const Degrees: Extended): Extended; function DegToCycle(const Degrees: Extended): Extended; function GradToRad(const Grads: Extended): Extended; inline; { Radians := Grads * PI / 200 } function GradToDeg(const Grads: Extended): Extended; function GradToCycle(const Grads: Extended): Extended; function CycleToRad(const Cycles: Extended): Extended; inline; { Radians := Cycles * 2PI } function CycleToDeg(const Cycles: Extended): Extended; function CycleToGrad(const Cycles: Extended): Extended; { Hyperbolic functions and inverses } function Cot(const X: Extended): Extended; inline; { alias for Cotan } function Sec(const X: Extended): Extended; inline; { alias for Secant } function Csc(const X: Extended): Extended; inline; { alias for Cosecant } function Cosh(const X: Extended): Extended; function Sinh(const X: Extended): Extended; function Tanh(const X: Extended): Extended; function CotH(const X: Extended): Extended; inline; function SecH(const X: Extended): Extended; inline; function CscH(const X: Extended): Extended; inline; function ArcCot(const X: Extended): Extended; { IN: X <> 0 } function ArcSec(const X: Extended): Extended; { IN: X <> 0 } function ArcCsc(const X: Extended): Extended; { IN: X <> 0 } function ArcCosh(const X: Extended): Extended; { IN: X >= 1 } function ArcSinh(const X: Extended): Extended;

Delphi如何使用基本的绘图函数绘制统计图

一个windows自带的画图工具是无论如何也不能满足我们的画图需要的,很多效果都需要我们在另外的工具中来实现。这些高级的功能是如何实现的呢,如何操纵一些基本的属性和函数,让它们最终能作出我们想要的效果呢?这里我们以绘制统计图来说明这些问题。 解决思路―― 这里,我们暂且先撇开具体的问题,综合地一下讨论画图的问题。 画图工具是基本元素的具体实现,对于我们初学者来说,还是有很好的参考价值的,在delphi 5中有一个自带的工程例子“……Borland\Delphi5\Demos\Doc\Graphex”,这个例子可以实现一些基本的绘图功能。对这个例子多加修改,一定会有所收获的。这里就不列出它的详细代码了,有心的读者可以自己找到这个例子。我这里只是想综合地讨论这方面的问题。使用DELPHI编写绘图软件的灵魂就在于操作画布,画笔和刷子,尽可能地挖掘它们的属性和相关参数的设置。 (一)画布 画布,画笔和刷子之间的关系很明了.其实,画笔和刷子都是画布的一个属性.而画布也只是TForm,TImage,TShape等组件对象的一个属性,专门负责与图象相关的信息打交道.它的主要作用可以概括如下几点: 1.指定使用画笔,刷子和字体的使用类型; 2.绘制和填充指定形状的线或图形; 3.修饰和改变图象; 画布的主要属性有: Brush--指定填充图形和背景的样式 CanvasOrientation--指定画布的定位类型,有coLeftToRight, coRightToLeft两个属性; ClipRect--指定剪切矩形的边界; CopyMode--指定图形图象的复制模式; Font--指定画布上使用的字体; Handle--为画布指定窗口GDI对象的设备描述表; LockCount--指定画布被别的线程锁定的次数; Pen--指定画布上使用的画笔,具体见下面描述; PenPos--指定画笔当前的位置; Pixels--指定当前剪切矩形的象素颜色; TextFlags--指定字体在画布上的显示方式,有ETO_CLIPPED,ETO_OPAQUE,ETO_RTLREADING,ETO_GL YPH_INDEX,ETO_IGNORELANGUAGE,ETO_NUMERICSLOCALETO_NUMERIC SLATIN等值可选; 画布相关的API函数及其注释如下: Arc--按指定方式画一条弧; BrushCopy--把位图复制到指定的画布的矩形中,用画布刷子颜色替换位图的颜色; Chord--按指定方式画弦; CopyRect--从一个矩形区域复制部分图象到另一个矩形区域; Draw--用指定参数在指定位置画图; DrawFocusRect--按指定焦点风格,通过异或操作来绘制一焦点矩形; Ellipse--按指定参数画一椭圆; FillRect--按指定的刷子填充一矩形; FloodFill--使用当前选定的刷子填充指定设备描述表中的一块区域;

delphi自定义函数收集1

本文包含以下自定义函数: 1、Base64编码函数。 2、Base64解码函数。 3、截取汉字子串函数,防止出现半个汉字现象。 4、人民币小写转换为大写函数。 1、Base64编码函数。 //Base64编码函数 function Base64Encode(InputData: string): string; //; Var OutputData: String const Base64TableLength = 64; Base64Table: string[Base64TableLength] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+*'; Pad = '='; var i: integer; CurrentB, PrevB: byte; c: byte; s: char; InputLength: integer; OutputData: string; FilterDecodeInput: Boolean; function ValueToCharacter(value: byte; var character: char): Boolean; //****************************************************************** // 将一个在0..Base64TableLength-1区间内的值,转换为与Base64编码相对应 // 的字符来表示,如果转换成功则返回True //****************************************************************** begin result := true; if (value > Base64TableLength - 1) then result := false else character := Base64Table[value + 1]; end; begin FilterDecodeInput := true; OutputData := ''; InputLength := Length(InputData); i := 1;

《数据库技术》(delphi)试卷及答案

湖北汽车工业学院《数据库技术》(delphi )试卷(A )答案 一、单选题(每题1.5分,共30分) 1、Delphi 程序设计的基本特点是:( D )。 A 可视化程序设计 B 代码程序设计 C 事件驱动编程 D A 和C 2、进度显示组件ProgressBar 的当前进度可以通过( C )属性设置。 A Step B Scroll C Position D Max 3、下列变量命名正确的是:( B )。 A 7ABC B My7 C page@2 D cmd..1 4、“x 是小于200的非负数”的Object Pascal 表达式是( C )。 A 0 ≤ x < 200 B x >= 0, x<200 C (x >=0) AND (x < 200) D (x >= 0 ) OR (x<200) 5、在窗体上建立多页面的用户界面,需要首先建立的对象是( B ) A TabControl BPageControl C HeaderControl DPageScroller 6、能够删除edit1中内容的语句是( A )。 A edit1.Clear ; Bedit1. Focused ; C edit1.Text= null ; D .edit1.text :='\0' ; 7、现建立一个简单报表,仅包含数据列标题栏、数据栏和汇总栏,则在Bands 属性的子属性中,不需要选择的是( A ) A HasColumnHeader B Detail C Summary D Title 8、下面哪个功能键可以调出Delphi 的联机帮助信息(A ) A F1键 B F2键 C F3键 D F4键 9、Onclick 事件的操作是( B )

DELPHI常用函数说明

一、数据类型转换函数1 在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。 1.FloatToStr 功能说明:该函数用于将“浮点型”转换成“字符型”。 参考实例: Edit1.Text := FloatToStr(1.981); 2.IntToStr 功能说明:该函数用于将“整数型”转换成“字符型”。 参考实例: S := IntToStr(10);(注:S为String类型变量。) 3.IntToHex 功能说明:该函数用于将“十进制”转换成“十进制”。该函数有二个参数1。第一个参数为要转换的十进制数据,第二个参数是指定使用多少位来显示十六进制数据。 参考实例: Edit1.Text := IntToHex('100', 2);

执行结果,Edit1.Text等于64。 注意:Delphi没有提供专门的“十六进制”转换为“十进制”的函数。使用StrToInt函数可以实现这个功能。具体代码是:I := StrToInt('S\' + '64'); 这时I等于100。加上一个'S\'即可将“十六进制”转换为“十进制”。 4.StrToInt 功能说明:该函数用于将“字符型”转换成“整数型”。 参考实例: I := StrToInt('100'); 注意:不能转换如StrToInt('ab')或StrToInt('好')这样的类型,因为他们并不存在数字型。 5.StrToFloat 功能说明:该函数用于将“字符型”转换成“浮点型”。 参考实例: N := StrToFloat(Edit1.Text); 注意:Edit1.Text中的内容为1.981(凡在Edit 控件中显示的文本均为字符串)。N为Double类型,用于保存转换后的浮点型数据。

Delphi函数大全

Delphi函数大全 首部function Languages: TLanguages; $[ 功能返回系统语言对象 说明通过此函数可以得到系统的语言环境 参考type 例子 12a12c12a12c. 参考 例子:= IsValidIdent; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToStr(Value: Integer): string; overload; $[ 首部function IntToStr(Value: Int64): string; overload; $[ 功能返回整数Value转换成字符串 说明Format('%d', [Value]) 参考function 例子:= IntToStr; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToHex(V alue: Integer; Digits: Integer): string; overload; $[ 首部function IntToHex(V alue: Int64; Digits: Integer): string; overload; $[ 功能返回整数Value转换成十六进制表现结果;Format('%.*x', [Digits, Value]) 说明参数Digits指定字符最小宽度;最小宽度不足时将用0填充 参考function 例子:= IntToHex, ; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToInt(const S: string): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时将引起异常 参考procedure 例子:= StrToInt; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToIntDef(const S: string; Default: Integer): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时则返回默认值Default 参考procedure 例子:= StrToIntDef, 0); ━━━━━━━━━━━━━━━━━━━━━ 首部function TryStrToInt(const S: string; out Value: Integer): Boolean; $[ 功能返回字符串S转换成整数V alue是否成功 说明字符串非整数表达时返回False并且Value将输出为0 参考procedure 例子 ..);打开失败则返回负数 参考function

Delphi法具体的实施步骤

Delphi法具体的实施步骤: 1、设置项目评估、预测组织小组 小组的主要任务是:拟订项目评估、预测主题,编制以通信方式咨询专家的评估、预测问题表,选择专家,依据专家几个轮回完成的咨询表,对专家提出的意见及结果进行一系列的整理统计分析等工作。 2、编制专家咨询表 在设计表时首先要在前言中说明本次研究的目的,对Delphi法作一简要介绍,以及专家在本研究中的作用。然后再根据研究主题设计出具体要征询的问题,以及必要的填表说明。专家咨询表要简化,问题的数量不宜过多、过繁,一般认为,如果问题数量超过50个,则项目评估组织小组就要认真研究问题是否过于分散。应注意的是,在Delphi法的实施过程中,任何情况下及下一轮,项目评估组织小组或领导者个人都不能把自己的意见列入到专家咨询表中,否则就有可能把评估、预测结果引入迎合领导人偏误的轨道上。 3、选择专家组 挑选专家是Delphi法预测成败的一个重要问题。一般认为要从与研究主题相关的各个分支学科中选择有一定经验的、对研究感兴趣的专家。专家成员选择不当,一方面会增加评价中的偏倚;另一方面又会导致轮回之间应答率的下降。而要检验未应答者与应答者之间是否有差异,则常常难以做到。 Delphi法专家选择的基本原则是必须突出广泛性、代表性和权威性,兼顾相关专业领域和地域分布。所谓专家,应当是在自己所擅长的领域很少犯错误的专门人才,应当拥有一定的信息储备量,如一般方法学和基础、理论规律性与基本趋势的知识、参考资料量、专业及其相近领域的交叉学科知识、以往评估的经验、对该部分其他评估专家不同观点的独立见解等。评估专家的选择,取决于具体课题的目的与任务,宜从本部门内外,甚至从国内外同时挑选。从外部选择专家比较困难,首先要搜集本部门职工较熟悉的专家名单,再从有关期刊和出版物中物色一批知名专家,然后发给这两部分专家以某种形式的调查表,并了解该专家能否自始至终参加评估,同时要求他们再推荐1~2名有关专家。评估小组从推荐名单中选择一批有2人以上同时推荐的专家。在选择专家的过程中,不仅要注意选择有一定名望的本学科专家,还需要选择有关的边缘学科,选择承担各种技术领导职务的专家固然重要,但应考虑他们是否有足够的时间填写调查表。经验表明,一个身居要职的专家匆忙填写的调查表,其参考价值不如一个一般专家认真填写的调查表。

DELPHI常用组件

Delphi常用组件的使用 目录 1.按钮类组件 1.1Button组件

Button组件位于Standard页。 Button组件的常用属性表 属性描述 Cation用于在按钮上显示文本内容 Cancel用来指定按钮是否为取消按钮 Default用于指定按钮是否为默认按钮,在按Enter键时也选中命令按钮Hint设置鼠标在组件上短暂停时在组件旁显示的提示小窗口的内容ShowHint确定是否显示提示文本,默认值是FALSE 1.2Bitbtn组件 Bitbtn组件(位图组件)位于Additional,与Button很相似,只是多了一个位图符号在按钮上(如带有对号的OK,问好的Help等),其某些属性与Button类似,下表为其独有的的特性。(注:此组件不需编写代码) Bitbtn组件的常用属性表 属性描述 Kind Kind属性的值就是位图按钮上显示的图标。Kind属性后的下拉列表中有一组默认图标的属性值,有bkCancel(取消)、bkAbort(终止)、bkAll(所有)、 bkClose(关闭)等。 Glyph用于在位图按钮上显示加载后的位图图形 NumGlyphs用于指明位图按钮所能使用位图的个数。在delphi中,最多允许向一个位图按钮提供4个图像文件,用于表示4中不停状态 Layout用于指出位图图形在位图组件上的放置位置 1.3SpeedButton组件 SpeedButton组件(加速按钮)位于Additional,常放置在Panel组件上,用于设计工具栏。它与Bitbtn相似,也可以显示图像和文本,但通常只用于显示图像。 SpeedButton组件的常用属性表 属性描述 AllowAllUp用于设置同一组的加速按钮是否具有同时弹起的状态。若设置为FALSE,则当同一组加速按钮中的一个被按下时,其他加速按钮都处于弹起状态,即这 组按钮必须有且只有一个处于按下状态 Down用于设置该加速按钮是否处于按下状态,若设置为TRUE,则表示按钮处于按下状态 Flat用于设置在鼠标移动到该按钮上时,按钮是否显示三维效果。为FLASE则不出现 GroupIndex用于将数个加速按钮设置成一组,只需将其值设置成不等于0的数值即可1.4RadioButton组件

《Delphi参考手册》

《Delphi参考手册》 ===========================================================================名称类型说明 --------------------------------------------------------------------------- Abort函数引起放弃的意外处理 Abs函数绝对值函数 AddExitProc函数将一过程添加到运行时库的结束过程表中 Addr函数返回指定对象的地址 AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分 Alignment属性控件标签的文字位置 AllocMem函数在堆栈上分配给定大小的块 AllowGrayed属性允许一个灰度选择 AnsiCompareStr函数比较字符串(区分大小写)AnsiCompareText函数比较字符串(不区分大小写)AnsiLowerCase函数将字符转换为小写 AnsiUpperCase函数将字符转换为大写 Append函数以附加的方式打开已有的文件 ArcTan函数余切函数 AssignFile函数给文件变量赋一外部文件名 Assigned函数测试函数或过程变量是否为空 AutoSize属性自动控制标签的大小 BackgroundColor属性背景色 BeginThread函数以适当的方式建立用于内存管理的线程BevelInner属性控件方框的内框方式 BevelOuter属性控件方框的外框方式 BevelWidth属性控件方框的外框宽度 BlockRead函数读一个或多个记录到变量中 BlockWrite函数从变量中写一个或多个记录 BorderStyle属性边界类型 BorderWidth属性边界宽度 Break命令终止for、while、repeat循环语句 Brush属性画刷 Caption属性标签文字的内容 ChangeFileExt函数改变文件的后缀 ChDir函数改变当前目录 Checked属性确定复选框选中状态 Chr函数返回指定序数的字符 CloseFile命令关闭打开的文件 Color属性标签的颜色 Columns属性显示的列数 CompareStr函数比较字符串(区分大小写) Concat函数合并字符串

(DELPHI)API函数大全

(DELPHI)API函数大全 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC (统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件

delphi常用函数大全

delphi常用函数大全(转) Abort函数引起放弃的意外处理 Abs函数绝对值函数 AddExitProc函数将一过程添加到运行时库的结束过程表中 Addr函数返回指定对象的地址 AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分 Alignment属性控件标签的文字位置 AllocMem函数在堆栈上分配给定大小的块 AllowGrayed属性允许一个灰度选择 AnsiCompareStr函数比较字符串(区分大小写) AnsiCompareText函数比较字符串(不区分大小写) AnsiLowerCase函数将字符转换为小写 AnsiUpperCase函数将字符转换为大写 Append函数以附加的方式打开已有的文件 ArcTan函数余切函数 AssignFile函数给文件变量赋一外部文件名 Assigned函数测试函数或过程变量是否为空 AutoSize属性自动控制标签的大小 BackgroundColor属性背景色 BeginThread函数以适当的方式建立用于内存管理的线程 BevelInner属性控件方框的内框方式 BevelOuter属性控件方框的外框方式 BevelWidth属性控件方框的外框宽度 BlockRead函数读一个或多个记录到变量中 BlockWrite函数从变量中写一个或多个记录 BorderStyle属性边界类型 BorderWidth属性边界宽度 Break命令终止for、while、repeat循环语句 Brush属性画刷 Caption属性标签文字的内容 ChangeFileExt函数改变文件的后缀 ChDir函数改变当前目录 Checked属性确定复选框选中状态 Chr函数返回指定序数的字符 CloseFile命令关闭打开的文件 Color属性标签的颜色 Columns属性显示的列数 CompareStr函数比较字符串(区分大小写) Concat函数合并字符串 Continue命令继续for、while、repeat的下一个循环 Copy函数返回一字符串的子串 Cos函数余弦函数 Ctl3D属性是否具有3D效果 Cursor属性鼠标指针移入后的形状 Date函数返回当前的日期 DateTimeToFileDate函数将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr函数将日期时间格式转换为字符串DateTimeToString函数将日期时间格式转换为字符串 DateToStr函数将日期格式转换为字符串

delphi函数参考手册

delphi函数参考手册 名称类型说明 abort 函数引起放弃的意外处理 abs 函数绝对值函数 addexitproc 函数将一过程添加到运行时库的结束过程表中addr 函数返回指定对象的地址 adjustlinebreaks 函数将给定字符串的行分隔符调整为cr/lf序列align 属性使控件位于窗口某部分 alignment 属性控件标签的文字位置 allocmem 函数在堆栈上分配给定大小的块 allowgrayed 属性允许一个灰度选择 ansicomparestr 函数比较字符串(区分大小写)ansicomparetext 函数比较字符串(不区分大小写)ansilowercase 函数将字符转换为小写 ansiuppercase 函数将字符转换为大写 append 函数以附加的方式打开已有的文件 arctan 函数余切函数 assignfile 函数给文件变量赋一外部文件名 assigned 函数测试函数或过程变量是否为空 autosize 属性自动控制标签的大小 backgrounddi2001.jpg 属性背景色 beginthread 函数以适当的方式建立用于内存管理的线程bevelinner 属性控件方框的内框方式

bevelouter 属性控件方框的外框方式 bevelwidth 属性控件方框的外框宽度 blockread 函数读一个或多个记录到变量中blockwrite 函数从变量中写一个或多个记录borderstyle 属性边界类型 borderwidth 属性边界宽度 break 命令终止for、while、repeat循环语句 brush 属性画刷 caption 属性标签文字的内容 change 函数改变文件的后缀 chdir 函数改变当前目录 checked 属性确定复选框选中状态 chr 函数返回指定序数的字符 closefile 命令关闭打开的文件 color 属性标签的颜色 columns 属性显示的列数 comparestr 函数比较字符串(区分大小写)concat 函数合并字符串 continue 命令继续for、while、repeat的下一个循环copy 函数返回一字符串的子串 cos 函数余弦函数 ctl3d 属性是否具有3d效果

delphi技术 FastMM的安装方法

delphi技术FastMM的安装方法 2010-01-14 15:45 FastMM 快速MM:-),在D2006和2007中已代替了原来的内存管理器。D7也可以使用,而且很方便哦。请看步骤: 1. FastMM是开源项目,去她老家先拖个来. https://www.wendangku.net/doc/8715310904.html,/projects/fastmm 2.文件替换 Replacement BorlndMM DLL\Precompiled\for Delphi IDE\Performance\BorlndMM.dll, 替换掉Delphi\Bin下的相应文件就可以完成对IDE的提速 3. 添加FassMM路径 Enviroment->Library->Directories添加FassMM路径 4.使能FastMM4 在你的项目文件中,Project->V iew Source打开后,uses后第一个添加FastMM4 5.All done! 运行程序,如果有Memory leak,在关闭程序时会有一个提示对话框. 对话框也是可以关闭的 打开FastMM4Options.inc文件。在文件的末尾添加如下代码: {$define Release} {$ifdef Release} {Specify the options you use for release versions below} {$undef FullDebugMode} {$undef CheckHeapForCorruption} {$define ASMV ersion} {$undef EnableMemoryLeakReporting} {$undef UseOutputDebugString} {$undef LogErrorsToFile} {$undef LogMemoryLeakDetailToFile} {$else} {Specify the options you use for debugging below} {$define FullDebugMode} {$define EnableMemoryLeakReporting} {$define UseOutputDebugString}{$endif} 重新打开把上面第一行条件编译定义选项{$define Release} 注释掉就可以了 如//{$define Release}

Delphi字符串处理函数

【字符串函数大全】 首部function AnsiResemblesText(const AText, AOther: string): Boolean; $[StrUtils.pas 功能返回两个字符串是否相似 说明ANSI(American National Standards Institute)美国国家标准协会;不区分大小写参考function StrUtils.SoundexProc; var StrUtils.AnsiResemblesProc 例子CheckBox1.Checked := AnsiResemblesText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiContainsText(const AText, ASubText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否包含子串ASubText 说明不区分大小写 参考function StrUtils.AnsiUppercase; function StrUtils.AnsiPos 例子CheckBox1.Checked := AnsiContainsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiStartsText(const ASubText, AText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否以子串ASubText开头 说明不区分大小写 参考function https://www.wendangku.net/doc/8715310904.html,pareString 例子CheckBox1.Checked := AnsiStartsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiEndsText(const ASubText, AText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否以子串ASubText结尾 说明不区分大小写 参考function https://www.wendangku.net/doc/8715310904.html,pareString 例子CheckBox1.Checked := AnsiEndsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiReplaceText(const AText, AFromText, AToText: string): string; $[StrUtils.pas 功能返回字符串AText中用子串AFromText替换成子串AToText的结果 说明不区分大小写 参考function SysUtils.StringReplace; type SysUtils.TReplaceFlags 例子Edit4.Text := AnsiReplaceText(Edit1.Text, Edit2.Text, Edit3.Text);

Delphi2010手册_1

马可坎图 Delphi2010Handbook A Guide to the New Features of Delphi 2010; upgrading from Delphi 2009 阿2010年指南德尔福的新特点,2009年升级从德尔福 Piacenza (Italy), February 2010 皮亚琴察(意大利),2010年2月 作者:马可坎图 Publisher: Wintech Italia Srl, Italy 出版商:文晔科技意大利Srl公司,意大利 编辑:彼得西澳木 技术审稿:奥尔赫弗里克,丹尼尔特提,马可波罗布雷韦列里,Chirs本森, Stefan Van As 凡由于斯特凡 封面设计:法布里奇奥斯基亚维 版权所有2009-2010马可波罗坎图,皮亚琴察,意大利。世界版权所有。 The author created example code in this publication expressly for the free use by its readers. 本出版物中的代码示例创建作者明确为读者免费使用。 The source 消息来源 code for this book is copyrighted freeware, distributed via the web site 该书受版权保护的代码,这是免费软件,通过网络站点分布 https://www.wendangku.net/doc/8715310904.html, . https://www.wendangku.net/doc/8715310904.html,。The copyright prevents you from republishing the code in print 版权防止打印你从代码重新发布 media without permission. 媒体未经允许。Readers are granted limited permission to use this code in their applications, 读者只获得有限的允许使用他们的应用程序代码中, as long at the code itself is not distributed, sold, or commercially exploited as a stand-alone product. 只要在代码本身没有分发,出售,或商业产品开发为一个独立的。 Aside from this specific exception concerning source code, no part of this publication may be stored in a 除了这一特定的异常有关源代码,没有出版的一部分,这可能是存储在 retrieval system, transmitted, or reproduced in any way, in the original or in a translated language, 检索系统,传送,或以任何方式复制,在最初的或在翻译的语言,

相关文档