C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Свойство создаваемого компонента, Свойство в инспекторе объектов
Valery_52
Отправлено: 31.01.2005, 08:58


Ученик-кочегар

Группа: Участник
Сообщений: 25



Builder 6.
Желаю создать компонент TABC.
Этот компонент имеет свойство (поле с именем NAB),
тип char или лучше AnsiString.
Это свойство может принимать три значения:
DNAbc[0]="ABC"; DNAbc[1]="BCD",DNAbc[2]="CDE".
Необходимо, чтобы эти значения присутствовали в свойствах
инспектора объектов.NAB имеет значение по умолчанию ="ABC".
Инициализацию провожу в модуле .cpp
//---------------------------------------------------------------------------
__fastcall TABCD::TABCD(TComponent* Owner)
: TComponent(Owner)
{
DNAbc[0] = "ABC";
DNAbc[1] = "BCD";
DNAbc[2] = "CDE";
}
//---------------------------------------------------------------------------
Модуль .h выглядит так:


#ifndef ABCDH
#define ABCDH
//---------------------------------------------------------------------------
#include
#include
//---------------------------------------------------------------------------
class PACKAGE TABCD : public TComponent
{
private:

static int i;
static char FNAB;
static char *DNAbc[];

protected:
public:
__fastcall TABCD(TComponent* Owner);
__property char NAB*DNAbc = { read=FNAB, write=FNAB, index=i,
default="ABC" };
__published:

};
//---------------------------------------------------------------------------
#endif
Компилятор выдает ошибку , или требует
инициализации DNAbc, не принимает значение по дефолту.
Как мне создать значение по умолчанию типа char или AnsiString,
поместить значения DNAbc[] в инспектор объектов? Где в вышеприведенном коде ошибки?
Прошу пожалуста подскажите.
AVC
Отправлено: 31.01.2005, 09:26


Ветеран

Группа: Модератор
Сообщений: 1583



Определите это свойство как enum.
Valery_52
Отправлено: 31.01.2005, 15:58


Ученик-кочегар

Группа: Участник
Сообщений: 25



Прошу прощения, а в кодах как это будет выглядеть в кодах ? smile.gif
AVC
Отправлено: 31.01.2005, 16:33


Ветеран

Группа: Модератор
Сообщений: 1583



Типа так
CODE

В зависимости от использования в одном или разных файлах
enum TBmpMode {tbColor, tbTile, tbStretch, tbProportion};

class PACKAGE TTileBmp : public TGraphicControl
{
private:
TBmpMode FBmpMode;
void __fastcall SetBmpMode (const TBmpMode);
protected:
public:
__published:
__property TBmpMode BmpMode = {read = FBmpMode, write = SetBmpMode, default = tbTile};
};

использование

if (mode == tbTile) ...
...

Инспектор покажет список из tbColor / tbProportion / tbStretch / tbTile

Отредактировано AVC — 31/01/2005, 16:38
Valery_52
Отправлено: 01.02.2005, 10:55


Ученик-кочегар

Группа: Участник
Сообщений: 25



Спасибо за подсказку, попробую сделать. smile.gif

Вернуться в Вопросы программирования в C++Builder