Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание собственных компонентов в BCB5 пользовательские свойства / 2 сообщений из 2, страница 1 из 1
22.12.2003, 15:20
    #32359839
black zorro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание собственных компонентов в BCB5 пользовательские свойства
1) Когда я пишу свойство типа перечисление так
enum TT_HorizontalAlignment {
xl_Hor_Left , xl_Hor_Right , xl_Hor_Center , xl_Hor_Justify
};
Все хорошо, а если так то в менеджер объектов названия значений для свойста выглядят фигней, непонятные значки, явно из не печатаемых с клавиатуры, плюс глюки с их количеством
enum TT_HorizontalAlignment {
xl_Hor_Left = 1 , xl_Hor_Right = 2, xl_Hor_Center =4, xl_Hor_Justify =8
};
2) Никак не могу создать коллекцию своих объектов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
class TExportColumn : public TCollectionItem {
protected:
 AnsiString FColumnTitle;
 int FColumnSize;
 TFormatDescriptor *FTitlesFormat;// ЭТО мой тип данных с ним все в порядке
// как отдельное свойство работает на ура, но как часть большой коллекции, увы
 TFormatDescriptor *FCellsFormat;
 AnsiString FFieldName;
 TCollection * m_parent;
public:

  __fastcall TExportColumn ( TCollection * parent , AnsiString FColumnTitle_1,
                  int FColumnSize_1,
                  TFormatDescriptor *FTitlesFormat_1,
                  TFormatDescriptor *FCellsFormat_1,
                  AnsiString FFieldName_1):
                  TCollectionItem (parent),
                  m_parent (parent)  ,
  FColumnTitle (FColumnTitle_1), FColumnSize (FColumnSize_1) ,  FTitlesFormat (new TFormatDescriptor),
  FCellsFormat (new TFormatDescriptor) , FFieldName (FFieldName_1) {
    *FTitlesFormat = *FTitlesFormat_1;
    *FCellsFormat= *FCellsFormat_1;
  }

  __fastcall TExportColumn (TCollection *parent):
  TCollectionItem (parent), m_parent (parent)  ,
  FColumnTitle ( "Undefined" ), FColumnSize ( 50 ) ,  FTitlesFormat (new TFormatDescriptor),
  FCellsFormat (new TFormatDescriptor) , FFieldName ( "Undefined" ) {
  }
  
  TPersistent __fastcall GetOwner(void){
     return m_parent;
  }
__published:
 __property   AnsiString ColumnTitle = {read=FColumnTitle, write=FColumnTitle};
 __property   int ColumnSize= {read=FColumnSize, write=FColumnSize};
 __property   TFormatDescriptor* TitlesFormat= {read=FTitlesFormat, write=FTitlesFormat};
 __property   TFormatDescriptor* CellsFormat= {read=FCellsFormat, write=FCellsFormat};
 __property   AnsiString FieldName= {read=FFieldName, write=FFieldName};

};

class TColumnsSet : public TCollection {
 TPersistent * parent_it;
public:
 TColumnsSet(TObject * Parent) : TCollection (__classid (TExportColumn) ) {
 }
 DYNAMIC TPersistent* __fastcall GetOwner(void){
  return parent_it;
 }

};

когда я в менеджере объектов пытаюсь просмотреть содержимое этой коллекции то получаю сообщение что
Invalid Selection: TColumnSet has no owner

3) Как писать деструкторы для компонентов которые выделяют для себя память,
у меня странное ощущение что BCB5 вызывает деструктор несколько раз.


______

Заранее спасибо, жду
...
Рейтинг: 0 / 0
22.12.2003, 18:18
    #32360125
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание собственных компонентов в BCB5 пользовательские свойства
1) редактор свойства по умолчанию для типа перечисление исходит из предположения, что парачисление начинается с нуля и идет с шагом 1 и максимум меньше 32. Нужно иначе - пиши свой редактор свойства для такого перечисления.

2) Ну так пропиши ему овнера.

3) Аккуратнее быть. Или проблемный код в студию.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание собственных компонентов в BCB5 пользовательские свойства / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]