Jus*_*tMe 2 delphi oop delphi-xe2
我想以最小的努力将多个对象作为一个参数传递.
我有一些类型
TOpenMode = [omNew, omEdit, omBrowse]
Run Code Online (Sandbox Code Playgroud)
和一个程序
procedure OpenForm(Form: TForm; ANewWindow: boolean = false;
Datasets: TUniDataSet; TableOpenMode: TOpenMode);
Run Code Online (Sandbox Code Playgroud)
我想传递多个数据集.没有数组或创建新对象,我可以这样做吗?如何让它们成对传递[UniTable1, TOpenMode], [UniTable2, TOpenMode]?
在单个复合类型中组合多个对象的最简单方法是记录:
type
TDataSetAndOpenMode = record
DataSet: TUniDataSet;
OpenMode: TOpenMode;
end;
Run Code Online (Sandbox Code Playgroud)
为方便起见,提供了初始化其中一条记录的功能:
function DataSetAndOpenMode(DataSet: TUniDataSet;
OpenMode: TOpenMode): TDataSetAndOpenMode;
begin
Result.DataSet := DataSet;
Result.OpenMode := OpenMode;
end;
Run Code Online (Sandbox Code Playgroud)
然后你的OpenForm函数可以接收这些记录的开放数组:
procedure OpenForm(Form: TForm; const Datasets: array of TDataSetAndOpenMode;
NewWindow: Boolean=False);
Run Code Online (Sandbox Code Playgroud)
请注意,我已将NewWindow参数放在最后.由于它具有默认值,因此该默认值仅在它出现在列表末尾时才有用.
现在,要调用该函数,您可以编写如下代码:
OpenForm(Form, [DataSetAndOpenMode(DataSet1, OpenMode1),
DataSetAndOpenMode(DataSet2, OpenMode2)]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |