【问题标题】:Create a Procedure using a TClientDataset as a parameter使用 TClientDataset 作为参数创建过程
【发布时间】:2021-06-11 22:38:11
【问题描述】:

我想在 Delphi 2010 中创建一个过程。

此过程将接收一个 TClientDataset 'cdTable1' 参数和一个 X 整数,它必须执行关闭/打开数据集的操作:

if cdTable1.Active then cdTable1.Close; cdTable1.Params.ParamByName('MyParameter').AsString:=X; cdTable1.Open;

如何定义和运行它?

【问题讨论】:

  • 您像创建任何其他过程一样创建它,然后像任何其他过程一样运行(调用)它。您遇到了哪些具体问题?
  • 其实参数定义有问题

标签: delphi delphi-2010


【解决方案1】:

试试这个:

procedure TForm1.MyProcName(cds : TClientDataSet; X : Integer);
begin
    if cds.Active then 
        cds.Close; 
    cds.Params.ParamByName('MyParameter').AsString := X; 
    cds.Open;
end;

procedure TForm1.Button1Click(Sender : TObject);
begin
    MyProcName(cdTabel1, 1234);
end;

在定义 TForm1 的接口部分,您必须添加:

public
    procedure MyProcName(cds : TClientDataSet; X : Integer);

如果您使用的是 TDataModule,那么 MyProcName 过程可能会在那里找到一个不错的位置,而不是表单。

【讨论】:

  • 但是不用绑定TForm1
  • @AmigoJack 也没有理由不绑定到 TForm1。由于我是 OOP 的粉丝,我几乎总是创建对象方法而不是旧式的帕斯卡过程。
  • 当然有原因:TForm1 的实例必须存在才能调用该方法,因为它甚至不是静态的(而且从这个角度来看,过程不需要绑定到实例)。
  • @fpiette 将每个例程强制放入一个不相关的对象中是不是 OOP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
相关资源
最近更新 更多