如何将一个自定义的过程作为参数传递给自定义的函数中?(如例) 在线等待(50分)

  • 主题发起人 主题发起人 haiyuinfo
  • 开始时间 开始时间
H

haiyuinfo

Unregistered / Unconfirmed
GUEST, unregistred user!
u_CompFrame 单元
procedure Tfrm_CompFrame.FillControlsComp( rs:tadoDataset);
begin
txtNameCshort.Text:= trim(rs.FieldByName('NameCshort').asstring);
txtNameC.Text:=trim(rs.FieldByName('NameC').asstring);
end;
U_common 单元:

function GetTable(strsql:string;ErrMsg:string;[red]RunPro:TMethod[/red]):integer;
var
rs:TadoDataset;
begin
try
rs:=TADODataSet.Create(application);
rs.Connection :=frm_main.Acon;
rs.CommandText:=strsql;
rs.Open;
if not rs.eof then
begin
result:=1;
[red] RunPro(rs) 如何将RunPro 指向 FillControlsComp(rs) [/red]
end
else
result:=0;
rs.Close;
rs.Destroy;
except
on E:exception do
begin
result:=-1;
frm_main.suiMessageDialogError.Text:=trim(ErrMsg);
frm_main.suiMessageDialogError.ShowModal;
exit;
end;
end;
end;
 
有没有人知道怎样做啊?[:(]
 
type
FCompProc = procedure(rs: TADODataSet) of object;
...
function GetTable(strsql:string;ErrMsg:string;RunPro:TCompProc):integer;
 
to dreamisx
提示错误啊,能不能详细一些阿
 
大家有么有好的建议阿
function GetTable(strsql:string;ErrMsg:string;RunPro:TMethod):integer;
我就是想让这段代码变得通用
 
[:)]解决问题还需自己多研究,复习一下pascical是有必要的
同时感谢 dreamisx所给与的提示

u_CompFrame 单元
procedure Tfrm_CompFrame.FillControlsComp( rs:tadoDataset);
begin
txtNameCshort.Text:= trim(rs.FieldByName('NameCshort').asstring);
txtNameC.Text:=trim(rs.FieldByName('NameC').asstring);
end;
调用 if GetTable('select * from t_CompanyInfo','数据填充错 误!',frm_CompFrame.FillControlsComp)=1 then
begin
end;
========================================
U_common 单元:
type
TFillControls=procedure(rs:tadoDataset) of object;

function GetTable(strsql:string;ErrMsg:string;RunPro:TFillControls):integer;
var
rs:TadoDataset;
begin
try
rs:=TADODataSet.Create(application);
rs.Connection :=frm_main.Acon;
rs.CommandText:=strsql;
rs.Open;
if not rs.eof then
begin
result:=1;
RunPro(rs);
end
else
result:=0;
rs.Close;
rs.Destroy;
except
on E:exception do
begin
result:=-1;
frm_main.suiMessageDialogError.Text:=trim(ErrMsg);
frm_main.suiMessageDialogError.ShowModal;
exit;
end;
end;
end;
 
解决了就结贴啊!呵呵,我还等着拿分呢。
 
后退
顶部