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

Jak*_*ays 0 delphi delphi-2010

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

published
    property Key: HKey read FKey write SetKey Default HKEY_LOCAL_MACHINE;
Run Code Online (Sandbox Code Playgroud)

And*_*and 5

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

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

...

published
  property RootKey: TRegistryRootKey read FRootKey write FRootKey
    default rkLocalMachine;
Run Code Online (Sandbox Code Playgroud)

当需要使用该值时,请执行类似的操作

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;
Run Code Online (Sandbox Code Playgroud)

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