Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список возможных констант в свойствах компонента, Как такое реализуется? 
:(
    Опции темы
Vlad55
Дата 20.9.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 14.8.2009

Репутация: нет
Всего: нет



Только начинаю постигать азы разработки компонентов и возник такой вопрос: 
есть набор констант:

Код

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);

В инспекторе появилось новое свойство, но просто как числовое значение, а не комбобокс со списков констант. Подскажите плз как сделать свойство со списком возможных констант
PM MAIL   Вверх
Louken
Дата 21.9.2009, 06:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.9.2008
Где: Кострома

Репутация: 1
Всего: 1



PM MAIL ICQ   Вверх
pseud
Дата 21.9.2009, 13:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Код

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;




--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1019 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.