Как да създадете HKey Property с падащ списък?

Използвайки Delphi 2010, създавам компонент със свойство на ключ на системния регистър.
Бих искал свойството да показва падащ списък със стойностите. Това, което имам по-долу, показва само числови стойности.

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

person JakeSays    schedule 24.02.2013    source източник


Отговори (2)


В допълнение към отговора на 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 частна константа на класа, ако имате нужда от нея в повече от един метод.

person Andreas Rejbrand    schedule 24.02.2013

Ако искате да използвате HKEY като тип данни за свойство, тогава ще трябва да напишете персонализиран редактор на свойства, за да накарате свойството да показва падащ списък с четими за човека имена по време на проектиране. Отговорът на Андреас е по-добър избор.

person Remy Lebeau    schedule 24.02.2013