Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Свойство в виде выпадающего списка


Автор: mr.Anderson 24.1.2007, 11:39
Вот я знаю, что при создании компонента можно задать свойство, например, так:
Код

__published:
  __property bool MyProperty { read = x1, write = Setx1, default = true }

Это получится свойство, которое может быть только TRUE/FALSE.

Вопрос 1. Как можно сделать свойство, например, текстовое? Просто не задавать DEFAULT?
Вопрос 2, основной. Как можно сделать свойство в виде выпадающего списка? Например, чтобы это свойство задавало режим работы нового компонента.

Автор: Vyacheslav 24.1.2007, 12:45
Цитата(mr.Anderson @  24.1.2007,  11:39 Найти цитируемый пост)
Вот я знаю, что при создании компонента можно задать свойство, например, так:

Надеюсь, что знаете smile и поэтому лишь случайно пропустили самое главное, что определяет 

Цитата(mr.Anderson @  24.1.2007,  11:39 Найти цитируемый пост)
свойство, которое может быть только TRUE/FALSE.

А именно его тип bool
Отсюда вывод: поведение поля ввода в инспекторе определяется в основном типом свойства
и соответвенно
Цитата(mr.Anderson @  24.1.2007,  11:39 Найти цитируемый пост)
Вопрос 1. Как можно сделать свойство, например, текстовое? Просто не задавать DEFAULT?

задать соответсвующий тип AnsiString
Код

__published:
  __property AnsiString MyProperty { read = FMyProperty, write = SetMyProperty }


Цитата(mr.Anderson @  24.1.2007,  11:39 Найти цитируемый пост)
Вопрос 2, основной. Как можно сделать свойство в виде выпадающего списка? Например, чтобы это свойство задавало режим работы нового компонента. 

Определить для свойства тип enum
Код

 enum  TypeOfComponent { Limited =0 , Standard, Extended };

Код

__published:
  __property  TypeOfComponent { MyProperty { read = FMyProperty, write = SetMyProperty , default = 1}





Автор: mr.Anderson 24.1.2007, 21:28
Ваш последний код не сработал, я его заменил вот так:
Код

...
int mode;
enum MyEnum { int1=0, int2 };
...
__published:
  __property MyEnum Mode = { read = mode, write = mode };

Получил ошибку: 
Цитата
[C++ Error] EditExt.h(43): E2347 Parameter mismatch in read access specifier of property Mode

Что не так?

Автор: Vyacheslav 25.1.2007, 10:51
Ну написано же по-английский smile  -  типы не совпадают

int mode;
...
__property MyEnum Mode = { read = mode, write = mode };





Автор: mr.Anderson 25.1.2007, 20:54
Да я понял, что типы не совпадают. smile Я не понял, какой тип присвоить переменным-полям. Тот же MyEnum, что ли? Тогда спасибо большое. smile 

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