| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
|
20.3.1.1写dfm文件的过程:writecomponentresfie 该过程带有两个参数filename和instance。filename参数指定要写入的dfm文件名,instance参数是tcomponent类型的,它指定要写入的部件名,一般是tform对象的子类。该过程将instance部件和其拥有的所有部件写入dfm文件。 这个过程的意义在于,可以在程序运行过程中产生delphi的窗体部件和在窗体中插入部件,并由该函数将窗体写入dfm文件,支持了动态dfm文件的重用性。 该过程的程序是这样的:
procedure writecomponentresfile(const filename: string; instance: tcomponent); var stream: tstream; begin stream := tfilestream.create(filename, fmcreate); try stream.writecomponentres(instance.classname, instance); finally stream.free; end; end;
函数中,用filestream创建文件,用stream对象的writecomponetres方法将instance写入流中。
20.3.1.2 读dfm文件的函数:readcomponentresfile
readcomponentresfile函数带有两个参数filename和instance。filename参数指定要读dfm文件名,instance参数指定从dfm文件中要读的部件。该函数从dfm文件中将instance和它拥有的所有部件,并返回该部件。 这个函数的意义在于,配合writecomponentresfile过程的使用支持dfm文件的重用性。 该函数的程序是这样的:
function readcomponentresfile(const filename: string; instance: tcomponent): tcomponent; var stream: tstream; begin stream := tfilestream.create(filename, fmopenread); try result := stream.readcomponentres(instance); finally stream.free; end; end;
程序中使用filestream对象打开由filename指定的dfm文件,然后用stream对象的readcomponentres方法读出instance,并将读的结果作为函数的返回值。
20.3.1.3 读取delphi应用程序资源中的部件
函数internalreadcomponentres可以读取delphi应用程序资源中的部件。delphi 的dfm文件在程序经过编译链接后被嵌入应用程序的资源中,而且格式发生了改变,即少了资源文件头。 在第一节中曾经介绍过tresourcestream对象,该对象是操作资源媒介上的数据的。函数internalreadcomponentres用了tresourcestream。程序是这样的:
function internalreadcomponentres(const resname: string; var instance: tcomponent): boolean; var hrsrc: thandle; begin { 避免“eresnotfound”异常事件的出现 } hrsrc := findresource(hinstance, pchar(resname), rt_rcdata); result := hrsrc <> 0; if not result then exit; freeresource(hrsrc); with tresourcestream.create(hinstance, resname, rt_rcdata) do try instance := readcomponent(instance); finally free; end; result := true; end;
hinstance是一个delphi vcl定义的全局变量,代表当前应用程序的句柄。函数用了资源访问api函数findresource来测定是否存在resname所描述资源。因为在tresourcestream的创建过程还有findresource等操作,所以函数中调用了freeresource。最后函数调用了stream对象的readcomponent方法读出部件。因为函数的instance是var类型的参数,所以可以访问instance,得到读出的部件。
20.3.1.4 dfm文件与标准文本文件(txt文件)的相互转换
在delphi可视化设计环境中,允许程序员在代码编辑器中以文本的方式浏览和修改dfm文件内容。当用file/open命令直接打开dfm文件或者选择窗体设计窗口的弹出式菜单上的view as text命令时,就会在编辑器中出现文本形式的信息。我们姑且将这种文本形式称之为窗体设计脚本。 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:第二十章 开发delphi对象式数据管理功能(四) 下一篇:没有了 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||