Welcome 微信登录

首页 / 软件开发 / Delphi

第十一章-Delphi应用程序的应用(二)(2)

第十一章-Delphi应用程序的应用(二)(2)

第十一章-Delphi应用程序的应用(二)(2)2007-05-07TApplication部件的OnHelp事件响应帮助事件。 当应用程序接收到一个所需的帮助时,发生OnHelp事件。使用OnHelp事件可以在需要帮助时定义一些特殊过程。 以下的例子改变了应用程序的帮助文件,AppHelp函数用来处理OnCreate事件。 function TForm1.AppHelp(Command.Word;Data : lontint) : Booleanbegi...
第十一章-Delphi应用程序的应用(二)(3)

第十一章-Delphi应用程序的应用(二)(3)

第十一章-Delphi应用程序的应用(二)(3)2007-05-07首先,在TForm1对象中宣称DisplayHint方法,并在单元的implementation部分编写实现代码。在DisplayHint方法中,把应用程序的Hint属性赋给面板的标题。另一个重要问题是必须把DisplayHint方法作为处理OnHint事件的方法。窗体的OnCreate事件的代码解决了这个问题。下面列出了程序的完整代码。当用户运行程序, 把鼠标置于菜单或部件之上,在窗体的...
第十章-动态链接库编程(一)(1)

第十章-动态链接库编程(一)(1)

第十章-动态链接库编程(一)(1)2007-05-07动态链接库(DLLs)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序创建自己的函数库。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的.OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如...
第十章-动态链接库编程(一)(2)

第十章-动态链接库编程(一)(2)

第十章-动态链接库编程(一)(2)2007-05-0710.2.1.3 DLLs中的变量和段 一个DLLs拥有自己的数据段(DS),因而它声明的任何变量都为自己所私有。调用它的模块不能直接使用它定义的变量。要使用必须通过过程或函数界面才能完成。而对DLLs来说,它永远都没有机会使用调用它的模块中声明的变量。一个DLLs没有自己的堆栈段(SS),它使用调用它的应用程序的堆栈。因此在DLL中的过程、函数绝对不要假定DS = SS。一些语言在小模式编译下有这种假...
第十章-动态链接库编程(一)(3)

第十章-动态链接库编程(一)(3)

第十章-动态链接库编程(一)(3)2007-05-0710.2.2 调用DLLs有两种方法可用于调用一个储存在DLLs中的过程。1.静态调用或显示装载使用一个外部声明子句,使DLLs在应用程序开始执行前即被装入。例如: function Instr(SourceStr : PChar;Check : Char); Integer; far; external "UseStr";使用这种方法,程序无法在运行时间里决定DLLs的调用。假如一个特定的DLLs在运...
第十章-动态链接库编程(一)(4)

第十章-动态链接库编程(一)(4)

第十章-动态链接库编程(一)(4)2007-05-0710.3 利用DLLs实现数据传输 10.3.1 DLLs中的全局内存 Windows规定:DLLs并不拥有它打开的任何文件或它分配的任何全局内存块。这些对象由直接或间接调用DLLs的应用程序拥有。这样,当应用程序中止时,它拥有的打开的文件自动关闭,它拥有的全局内存块自动释放。这就意味着保存在DLLs全局变量中的文件和全局内存块变量在DLLs没有被通知的情况下就变为非法。这将给其它使用该DLLs的应用程...
第十章-动态链接库编程(二)(1)

第十章-动态链接库编程(二)(1)

第十章-动态链接库编程(二)(1)2007-05-0710.3.2.2 服务器程序的编写 服务器程序必须包含对DLL的调用代码,如: function GetGlobalMem: THandle; far; external "c:dllsglbmem";通过调用该函数,服务器可以获得全局内存块的句柄。在写入数据前,服务器必须锁定全局内存,以避免在写入过程中Windows移动该内存块的位置。函数GlobalLock锁定全局内存并返回指向该内存块的指针: p...
第十章-动态链接库编程(二)(2)

第十章-动态链接库编程(二)(2)

第十章-动态链接库编程(二)(2)2007-05-0710.4.1 利用DLLs实现窗体重用的一般步骤 利用DLLs实现窗体重用的步骤是:1.在集成开发环境(IDE)中,按自己的需要设计一个窗体;2.编写一个用于输出的函数或过程。在该函数或过程中,设计的窗体被实例化;3.重复步骤1、2,直到完成所有重用窗体的设计;4.打开工程文件,进行修改,以适应生成 .dll文件的需要:(1).把保留字program设为library;(2).从uses子句中去掉For...
第十章-动态链接库编程(二)(3)

第十章-动态链接库编程(二)(3)

第十章-动态链接库编程(二)(3)2007-05-07在口令设置窗口中,为了确保用户记住了设置的口令,在用户输入并按回车键后,要求用户再次输入进行确认。只有用户重新输入的字符串与原设置口令相同,口令设置窗口才能正常关闭 。否则将原设置口令清空,要求用户再次输入。以上功能的实现在编辑框的OnKeyPress事件处理过程中。 procedure TSetPassWordForm.Edit1KeyPress(Sender: TObject; var Key: C...
第九章-Delphi拖放编程(1)

第九章-Delphi拖放编程(1)

第九章-Delphi拖放编程(1)2007-05-07拖放(DragDrop)是Windows提供的一种快捷的操作方式。作为基于Windows的开发工具,Delphi同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了Delphi的强大功能和方便性。Delphi提供的所有控件(Control,即能获得输入焦点的部件)都支持拖放操作,并有相应的拖放属性、拖放事件和拖放方法。下面我们先介绍控件的拖放支持,而后再给出开发拖放操作的一般步骤和应用实例。...
第九章-Delphi拖放编程(2)

第九章-Delphi拖放编程(2)

第九章-Delphi拖放编程(2)2007-05-079.1.3 拖放方法 拖放方法有三个:●BeginDrag : 人工方式下开始一个拖动●EndDrag : 结束一个拖动●Dragging : 判断一个控件是否正被拖动 这三个方法都被源控件使用。当DragMode置为dmManual时,拖动必须调用控件的BeginDrag方法才能开始。BeginDrag有一个布尔参数Immediate。如果输入参数为True,拖动立即开始,光标改变到DragCurso...
第九章-Delphi拖放编程(4)

第九章-Delphi拖放编程(4)

第九章-Delphi拖放编程(4)2007-05-079.3 拖放应用实例:文件管理器的拖放支持 在第六章最后开发的文件管理器应用实例,虽然功能上已初具规模,但在操作上与Windows的文件管理器相比还有很大不足。其中最大的缺陷是它不支持文件的拖放移动和拖放拷贝。在这一章结束的时候,我们可以来弥补这一缺陷了。文件拖放移动指的是当用户把一个文件拖动到目录树下的某一目录并放下时,文件将自动移动到该目录中;文件拖放拷贝指的是当用户把一个文件拖动到某个驱动器标签...
第八章-对象链接与嵌入(一)(1)

第八章-对象链接与嵌入(一)(1)

第八章-对象链接与嵌入(一)(1)2007-05-07对象链接和嵌入(Object Linking and Embeding)是一组服务功能,它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法。 对象可以是几乎所有的信息类型,如文字、位图、矢量图形,甚至于声音注解和录像剪辑等。Windows附件组中的书写器是应用OLE的实例,使用单击“对象 | 插入”菜单项, 书写器弹出插入对话框,对话框中列出了多个OLE服务器程序,如公...
第八章-对象链接与嵌入(一)(2)

第八章-对象链接与嵌入(一)(2)

第八章-对象链接与嵌入(一)(2)2007-05-078.2 设计状态OLE对象的创建 Dephi可以在设计状态和运行状态中创建OLE对象。本节介绍设计状态OLE对象的创建。 8.2.1 TOLEContainer部件 要创建OLE对象,需在窗体中加入OLE包容器部件。 应用程序部件包含链接或嵌入的对象。用该部件可显示在OLE服务器编辑的数据。部件的ObjClass,ObjDoc,ObjItem 属性分别定义OLE类、文件、项目。要定义OLE对象是否本地...
第八章-对象链接与嵌入(一)(3)

第八章-对象链接与嵌入(一)(3)

第八章-对象链接与嵌入(一)(3)2007-05-078.3.2.2 初始化OLE包容器部件 为了使OLE包容器部件包含OLE对象,必须对部件进行初始化。 初始化主要是定义部件的OLE类。如果定义了OLE文件和OLE项目,初始化完成后,OLE 应用程序部件将包含OLE对象。调用InsertOLEObjetDlg函数可在其参数PInitInfo获得关于OLE对象初始化的信息时,把它传递给OLE包容器部件的PInitInfo属性,OLE包容部件的ObjClas...
第八章-对象链接与嵌入(一)(4)

第八章-对象链接与嵌入(一)(4)

第八章-对象链接与嵌入(一)(4)2007-05-078.3.4.2 在剪贴板中使用OLE对象 要把OLE对象粘贴到OLE应用程序中,必须用Windows的 RegisterClipboardFormat函数为链连对象、嵌入对象注册两种新的剪贴板格式。这些格式将在BOLEFormat记录的fmtIdt域中被用到。本章例程中, 程序在OnCreate事件中注册OLE对象的剪贴板格式,以下代码是主窗体的OnCreate事件: procedure TOLEF...
第八章-对象链接与嵌入(二)(1)

第八章-对象链接与嵌入(二)(1)

第八章-对象链接与嵌入(二)(1)2007-05-078.3.5.2 在应用程序中释放OLE对象 当一个对象释放到一个窗体,该窗体发生OnDragDrop 事件。该对象定义为TDragDropEvent方法中的Source参数,而TDragDropEvent 方法是用来处理OnDragDrop事件”。 如果Source 是一个OLE 对象, 那么它是TOLEDropNotify 对象的派生类型。 TOLEDropNotify对象有一个与OLE包...
第八章-对象链接与嵌入(二)(2)

第八章-对象链接与嵌入(二)(2)

第八章-对象链接与嵌入(二)(2)2007-05-07 8.4 OLE自动化 OLE自动化是Windows应用程序操纵另一个程序的一种机制。OLE 2.0提供了一种方法来集成应用程序,这就是应用程序之间的命令操作。利用OLE 2.0,程序员可以定义一组命令,使它们进入到其它程序中。这些命令可带参数。看起来很象应用程序在调用函数或过程一样。采用上述办法, 可以在人不参与的情况下,就能使得两个应用程序的相互作用。被自动化的程序称作自动化对象或自动化服务器, 操...
<< 1 2 3 4 5 6 7 8 9 10 >>