Замена стандартной Панели свойств

Автор vannikira, 20.10.17, 20:48:32

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

vannikira

Необходимо из библиотеки вызвать собственную панель свойств. Ранее это делалось с помощью интерфейса IPropertyManager, но он позволяет создать новую панель свойств, а не заменить стандартную. А надо именно ЗАМЕНИТЬ стандартную.  Изучала пример в SDK Gayka1, поняла, что надо использовать интерфейс IProcessParam. Вот только пишу по аналогии свой код и не работает, замена не происходит ( Не понятно в какой именно момент происходит эта замена? Пишу на C++. Что делаю:

IProcessParamPtr ProcParam= newKompasAPI->CreateProcessParam(); 
new PropertyManagerEvent( procParam, *this );// Обработчик событий от менеджера панели свойств
procParam->SpecToolbar = toolBarType;// Тип кнопок на панели свойств         
procParam->Caption    = _T("Имя панели");// Имя панели свойств
...
PropertyManagerEvent::PropertyManagerEvent( LPDISPATCH manager, PropertyManagerObject& _obj ):
  ABaseEvent( manager, DIID_ksPropertyManagerNotify )
  , obj( _obj )
{
  Advise();
}

Мне кажется что-то не так с PropertyManagerEvent? Может кто разбирался? Есть идеи?
 

Sabahs

21.10.17, 17:55:49 #1 Последнее редактирование: 21.10.17, 20:40:23 от Sabahs
Вызывайте процесс, интерфейсы схожи.
PS. Наполняйте, стандартную панель, контроль, через события.

vannikira

Так я так и делаю, а панель остается стандартная.
Пример того что делаю:

Файл cPropMen.h
class PropertyManagerObject{
protected:
   IProcessParamPtr procParam;
   IPropertyTabsPtr propTabs;
   IPropertyControlsPtr collection;
public:
   PropertyManagerObject();
   virtual ~PropertyManagerObject();
   
   bool InitProcessParam(long toolBarName, SpecPropertyToolBarEnum toolBarType, long firstTabName);
   bool CreateTab(long tabName, BOOL visible, BOOL active);
   IPropertyCheckBoxPtr CreateCheckBox(BOOL checked, BOOl enable);
};


В файле cPropMen.cpp содержатся определения (приведу только основное).
bool PropertyManagerObject::InitProcessParam(long toolBarName, SpecPropertyToolBarEnum toolBarType, long firstTabName)
{
   bool res = false;
   procParam = newKompasAPI->CreateProcessParam();
   new PropertyManagerEvent(procParam, *this);
   procParam->Caption = _bstr_t(LoadStr(toolBarName));
   procParam->SpecToolbar = toolBarType;

   propTabs = procParam->PropertyTabs;
   CreateTab(firstTabName,TRUE,TRUE);//Создание закладки параметров элементов
   IPropertyCheckBoxPtr CheckBox (CreateCheckBox(TRUE,FALSE));//Создание контрола - CheckBox
   CheckBox ->Name="Операция 1";
   CheckBox->Id=1000;

   res=true;
   return res;
}


И в главном файле Main.cpp вызываю
void WINAPI LIBRARYENTRY(unsigned int comm)
{
   switch (comm)
   {case 1:CreatePropertyManager();breake;}
}

void CreatePropertyManager()
{
   PropertyManagerObject* obj = new PropertyManagerObject;
   if (obj)
   {obj->InitProcessParam(NAME_PANEL, pnEnterEscHelp, NAME_TAB);}
}

Есть идеи что я делаю не так? Может надо какие-то еще функции оформления библиотек использовать?
Просто я так и не понимаю, в какой момент (какое событие, действие) происходит замена стандартной панели свойств на нашу?

Уже неделю с этим вопросом сижу. Помогите, пожалуйста!!!   

Sabahs


vannikira

Все равно не понятно почему не работает. Делаю как в SDK в примере Gayka1 .
Может есть простой пример замены стандартной панели свойств?? Буду очень благодарна)

DesignЯR

Вот тут есть та же Гайка только попроще (С#). Меньше контроллов и нет базы данных. - Команда "Курсор и панель" - класс CursorPanel.