Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Список возможных констант в свойствах компонента


Автор: Vlad55 20.9.2009, 21:42
Только начинаю постигать азы разработки компонентов и возник такой вопрос: 
есть набор констант:

Код

xlWBATChart = -4109;
xlWBATExcel4IntlMacroSheet = 4;
xlWBATExcel4MacroSheet = 3;
xlWBATWorksheet = -4167;


Надо сделать так, чтобы в дизайн-тайме у компонента появлялся в свойствах список с этими константами. Посмотрел как это примерно делается с TColor:
Код

type
{$IF NOT DEFINED(CLR)}
  PColor = ^TColor;
{$IFEND}
  TColor = -$7FFFFFFF-1..$7FFFFFFF;

{$IF NOT DEFINED(CLR)}
  {$NODEFINE TColor}
  {$OBJTYPENAME TColor 'NTColor'}

  (*$HPPEMIT 'namespace Graphics'*)
  (*$HPPEMIT '{'*)
  (*$HPPEMIT '  enum TColor {clMin=-0x7fffffff-1, clMax=0x7fffffff};'*)
  (*$HPPEMIT '}'*)
{$IFEND}


const
  clSystemColor = $FF000000;

  clScrollBar = TColor(clSystemColor or COLOR_SCROLLBAR);
  clBackground = TColor(clSystemColor or COLOR_BACKGROUND);
  clActiveCaption = TColor(clSystemColor or COLOR_ACTIVECAPTION);
  clInactiveCaption = TColor(clSystemColor or COLOR_INACTIVECAPTION);
  clMenu = TColor(clSystemColor or COLOR_MENU);


Попробовал реализовать у себя:
Код

type
  TWBTemplate = -4167 .. 4;

const
  xlWBATChart = TWBTemplate(-4109);
  xlWBATExcel4IntlMacroSheet = TWBTemplate(4);
  xlWBATExcel4MacroSheet = TWBTemplate(3);
  xlWBATWorksheet = TWBTemplate(-4167);

В инспекторе появилось новое свойство, но просто как числовое значение, а не комбобокс со списков констант. Подскажите плз как сделать свойство со списком возможных констант

Автор: Louken 21.9.2009, 06:26
http://www.citforum.ru/programming/32less/les42.shtml

Автор: pseud 21.9.2009, 13:21
Код

type
  TMyExcelType =  (
    mxtChart = -4109,
    mxtExcel4IntlMacroSheet = 4,
    mxtExcel4MacroSheet = 3,
    mxtWorksheet = -4167
  );

type
  TMyComponent = class(TComponent)
  private
    FExcelType: TMyExcelType;
    procedure SetExcelType(const Value: TMyExcelType);
  public
    property ExcelType: TMyExcelType read FExcelType write SetExcelType;
  end;

......


procedure TMyComponent.SetExcelType(const Value: TMyExcelType);
begin
  FExcelType := Value;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)