Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание визуально отображаемой коллекции 
V
    Опции темы
ИванМ
Дата 9.7.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Как сделать так чтобы в пользовательском компоненте была бы пользовательская коллекция с доступом __published, которую можно было бы редактировать в инспекторе объектов?
Я делаю так:

Код

enum TControlType{ctNone, ctEdit, ctComboBox};

class TGridControl: public TCollectionItem
{
private:
    TControlType FControlType;
__published:
    __fastcall TGridControl(TCollection* collection):
        TCollectionItem(collection) {}
    __property TControlType Type={read=FControlType, write=FControlType};
};
//---------------------------------------------------------------------------
class TGridControlCollection: public TCollection
{
private:
protected:
    TGridControl* __fastcall GetItem(int index);
    void __fastcall SetItem(int index, TGridControl* value);
__published:
    __fastcall TGridControlCollection(): TCollection(__classid(TGridControlCollection)){}
    void __fastcall Delete(int Index);
    TGridControl* __fastcall Add();
    __property __fastcall TGridControl* Items[int index]={read=GetItem, write=SetItem};
};

class PACKAGE TExtendedStringGrid : public TStringGrid
{
private:
    TGridControlCollection* FControls;
//...
__published:
    __property __fastcall TGridControlCollection* Controls={read=FControls, write=FControls};
}


В результате в инспекторе объектов коллекция появляется, но при нажатии на кнопку "..." ничего не происходит.
PM MAIL   Вверх
dumb
Дата 10.7.2009, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(ИванМ @  9.7.2009,  19:51 Найти цитируемый пост)
при нажатии на кнопку "..." ничего не происходит
не создал FControls
и не тот тип элементов передал конструктору TCollection.

Код

...
class TGridControlCollection: public TCollection
{
__published:
    __fastcall TGridControlCollection(): TCollection(__classid(TGridControl)) {};
};
//---------------------------------------------------------------------------
class PACKAGE TExtendedStringGrid : public TStringGrid
{
private:
    TGridControlCollection* FControls;
public:
    __fastcall TExtendedStringGrid(TComponent* Owner)
               : TStringGrid(Owner), FControls(new TGridControlCollection()) {};
__published:
    __property __fastcall TGridControlCollection* Controls={read=FControls, write=FControls};
};
//---------------------------------------------------------------------------


PM MAIL   Вверх
ИванМ
Дата 10.7.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



dumb, большое спасибо. Заработало.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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