gpt4 book ai didi

delphi - 将多个对象作为一个参数传递

转载 作者:行者123 更新时间:2023-12-03 01:18:45 31 4
gpt4 key购买 nike

我想以最小的努力将多个对象作为一个参数传递。

我有某种类型

TOpenMode = [omNew, omEdit, omBrowse] 

还有一个过程

procedure OpenForm(Form: TForm; ANewWindow: boolean = false; 
Datasets: TUniDataSet; TableOpenMode: TOpenMode);

我想传递多个数据集。我可以在不使用数组或创建新对象的情况下做到这一点吗?如何使它们成对传递[UniTable1, TOpenMode], [UniTable2, TOpenMode]

最佳答案

在单个复合类型中组合多个对象的最简单方法是记录:

type
TDataSetAndOpenMode = record
DataSet: TUniDataSet;
OpenMode: TOpenMode;
end;

为了方便起见,提供一个函数来初始化以下记录之一:

function DataSetAndOpenMode(DataSet: TUniDataSet; 
OpenMode: TOpenMode): TDataSetAndOpenMode;
begin
Result.DataSet := DataSet;
Result.OpenMode := OpenMode;
end;

然后您的 OpenForm 函数可以接收此类记录的开放数组:

procedure OpenForm(Form: TForm; const Datasets: array of TDataSetAndOpenMode;
NewWindow: Boolean=False);

请注意,我已将 NewWindow 参数放在末尾。由于它有一个默认值,因此该默认值仅在出现在列表末尾时才有用。

现在,要调用该函数,您可以编写如下代码:

OpenForm(Form, [DataSetAndOpenMode(DataSet1, OpenMode1), 
DataSetAndOpenMode(DataSet2, OpenMode2)]);

关于delphi - 将多个对象作为一个参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102290/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com