Ajgor |
Отправлено: 10.11.2004, 20:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Подскажите пожалуйста, как сделать так что бы в инспекторе объектов появилась кнопка с тремя точками ("...") при нажатии которой например появлялся диалог выбора файла. (типа как свойство DataBaseName у компонента TIBDatabase)
Заранее спасибо!!!
|
|
olegenty |
Отправлено: 11.11.2004, 07:47 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
определить свой PropertyEditor для данного свойства компонента.
|
|
Rius |
Отправлено: 11.11.2004, 08:35 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
В простейшем случае создаешь новый компонент на основе нужного, в h-файле компонента добавляешь следующее:
CODE | //---------------------------------------------------------------------------
#ifdef __BUILDER6__
#include "designeditors.hpp"
#include "designintf.hpp"
#endif
#ifdef __BUILDER5__
#include <dsgnintf.hpp>
#endif
class TOPCClientProperty : public TPropertyEditor
{
void __fastcall Edit();
TPropertyAttributes __fastcall GetAttributes();
AnsiString __fastcall GetValue();
};
|
В CPP, в функции регистрации компонента
CODE | PTypeInfo ti = *GetPropInfo(__typeinfo(TOPCClient),"Items")->PropType;
RegisterPropertyEditor(ti, __classid(TOPCClient),
"Items",__classid(TOPCClientProperty));
|
В CPP просто:
CODE | //---------------------------------------------------------------------------
void __fastcall TOPCClientProperty::Edit()
{
//Здесь можно показать свою форму редактора свойства
ShowItemsEditor(Designer, (TOPCClient *)this->GetComponent(0));
}
//---------------------------------------------------------------------------
TPropertyAttributes __fastcall TOPCClientProperty::GetAttributes()
{
return TPropertyAttributes() << paDialog >> paMultiSelect;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TOPCClientProperty::GetValue()
{
TOPCClient *cl = (TOPCClient *)this->GetComponent(0);
if(cl->Count == 0) return "None";
// else return cl->Items->ClassName();
else return "TOPCTag[]";
}
|
Здесь приведен только самый необходимый код для PropertyEditor, все остальное — куча заморочек. Еще в пакет надо включить доп. билиотеки.
|
|
Ajgor |
Отправлено: 11.11.2004, 15:22 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Спасибо за ответы |
|