Как создать свойство HKey с выпадающим списком?

Используя 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