当前位置:七道奇文章资讯编程技术Delphi编程
日期:2011-03-20 17:55:00  来源:本站整理

第二十章 开辟Delphi对象式数据管理功效(五)[Delphi编程]

赞助商链接



  本文“第二十章 开辟Delphi对象式数据管理功效(五)[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

20.3.1.1DFM文件的历程:WriteComponentResFie

   该历程带有两个参数FileNameInstance.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函数带有两个参数FileNameInstance.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办法读出部件.因为函数的Instancevar范例的参数,所以可以拜候Instance,得到读出的部件.


  以上是“第二十章 开辟Delphi对象式数据管理功效(五)[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 第二十章 开辟Delphi对象式数据管理功效(五)
  • 第二十章 开辟Delphi对象式数据管理功效(四)
  • 第二十章 开辟Delphi对象式数据管理功效(三)
  • <b>第二十章 开辟Delphi对象式数据管理功效(二)</b>
  • 第二十章 开辟Delphi对象式数据管理功效(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .