电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

经典案例 财务管理系统(8)[2]


发布日期:2018/4/12
 

该窗体所要完成的任务是调用该dll的程序向窗体输入要链接的数据表的表名当数据表链接成功后可以通过双击DBGrid的某栏向调用该窗体的程序返回表中的某一项值并关闭窗体

() 为该窗体的设置处理代码如下

unit dllForm;

interface

uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs DB Grids DBGrids ADODB;

type

TdllSec = class(TForm)

ADOTable: TADOTable;

DBGrid: TDBGrid;

DataSource: TDataSource;

procedure DBGridDblClick(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

//此函数负责取得当前应用程序的句柄并显示窗体它是供外部调用的函数

function showdllform(Ahandle:Thandle;Acaption:string;tablename:string):string;stdcall;

var

//用此变量向调用dll的程序返回值

resultstr:string;

implementation

{$R *dfm}

function showdllform(Ahandle:Thandle;Acaption:string;tablename:string):string;stdcall;

var

newform:Tdllsec;

begin

//取得句柄

applicationHandle:=Ahandle;

//建立窗体

newform:=TdllsecCreate(application);

newformCaption:=Acaption+(双击选择);

//建立数据库链接

newformADOTableTableName:=tablename;

newformADOTableActive:=true;

//显示窗体

try

newformShowModal;

//返回双击所选择的结果

result:=resultstr;

//释放该窗体

finally newformFree;

end;

end;

//双击选择数据栏返回数值

procedure TdllSecDBGridDblClick(Sender: TObject);

begin

resultstr:=dbgridFields[]Text;

close;

end;

//设置表宽度

procedure TdllSecFormShow(Sender: TObject);

var

i:integer;

begin

for i:= to dbgridFieldCount do

dbgridColumns[i]Width:=;

end;

end

此时按F键运行该工程的话就会得到如图所示的信息

直接运行dll得到的信息

这是因为调试dll时需要一个宿主程序如果编译后直接运行就会得到这个提示解决这一问题需要写一个调用这个dll的exe程序编译后将它的路径填到Run | Parameters菜单的Host app 输入条中

但是实际上如果直接按F或编译允许DLL工程后即便是弹出了上面的对话框若读者浏览该工程所储存目录就可以发现已经生成了一个secdll动态链接库这就是我们在下面的程序中要用到的DLL就可以直接调用了

[] []

上一篇:经典案例 财务管理系统(8)[1]

下一篇:远程控制编程揭密