如何制作GetFieldName()函数

时间:2011-08-21 10:57:55

标签: delphi

我有:

TMyForm = class(TForm)
strict private
  FMyColumn: TMyGridColumn;
  ...
end;

...

constructor TMyForm.Create;
begin
  ...
  FMyColumn := TMyGridColumn;
  FMyColumn.Name := 'FMyColumn';

  // I wish to substirtute it with a call like this which will return 'FMyColumn'
  FMyColumn.Name := GetFieldName(FMyColumn);
  ...
end;

我需要使用一些有意义的名称初始化组件(TMyGridColumn)名称,但更喜欢不将其名称硬编码为字符串文字。

非RTTI解决方案将更受欢迎。

1 个答案:

答案 0 :(得分:2)

对象没有任何先验知识,其中的字段或变量引用它。因此,如果没有更多信息,您就无法编写这样的功能。

如果您的函数知道哪个对象具有对该列的引用,那么它可以使用RTTI来查找其名称。没有RTTI,你不能指望这样做。

我认为您遇到的根本问题是,虽然您将函数命名为GetFieldName,但您没有传递字段。您正在传递对象引用。