如何使用下拉列表创建HKey Property?

时间:2013-02-24 15:31:15

标签: delphi delphi-2010

使用Delphi 2010,我正在创建一个具有Registry Key属性的组件 我希望该属性显示值的下拉列表。我在下面的内容仅显示数值。

published
    property Key: HKey read FKey write SetKey Default HKEY_LOCAL_MACHINE;

2 个答案:

答案 0 :(得分:5)

除了TLama的回答之外,我认为最简单的方法就是做到这一点

type
  TRegistryRootKey = (rkClassesRoot, rkCurentUser, rkLocalMachine,
    rkUsers, rkPerformanceData, rkCurrentConfig, rtDynData);

...

published
  property RootKey: TRegistryRootKey read FRootKey write FRootKey
    default rkLocalMachine;

当需要使用该值时,请执行

之类的操作
procedure TMyClass.DoSomething;
const
  RootKeys: array[TRegistryRootKey] of DWORD = (HKEY_CLASSES_ROOT,
    HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_PERFORMANCE_DATA,
    HKEY_CURRENT_CONFIG, HKEY_DYN_DATA);
begin

  Windows.SomeAPIFunction(RootKeys[FRootKey]);

end;

当然,如果你需要多个方法,你可以使RootKeys常量为类的私有常量。

答案 1 :(得分:0)

如果要使用HKEY作为属性数据类型,则必须编写自定义属性编辑器,以使属性在设计时显示人类可读名称的下拉列表。安德烈亚斯的回答是更好的选择。