Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с копированием объектов в DLL

22K
20 февраля 2007 года
MYTH777
5 / / 19.02.2007
:mad:
История такая:
Беру указатель TForm из DLL
Присваиваю Parent этой Формы панели в другой DLL
Все компоненты которые лежали на этой форме не могут переключаться между собой. Т.Е. не обрабатывается табуляция. Что делать? Подскажите пожалуйста.
:mad:
19K
20 февраля 2007 года
Termi_uc
33 / / 13.02.2007
Прошли проект.
Я у себя попробовал, то что ты говориш - всё пучком, Tab работает...
1
20 февраля 2007 года
kot_
7.3K / / 20.01.2000
Цитата: MYTH777
:mad:
История такая:
Беру указатель TForm из DLL
Присваиваю Parent этой Формы панели в другой DLL
Все компоненты которые лежали на этой форме не могут переключаться между собой. Т.Е. не обрабатывается табуляция. Что делать? Подскажите пожалуйста.
:mad:


Может быть твоя форма просто не активна?

22K
21 февраля 2007 года
MYTH777
5 / / 19.02.2007
Цитата: Termi_uc
Прошли проект.
Я у себя попробовал, то что ты говориш - всё пучком, Tab работает...




Короче бадяга такая
==1.dll==
На форме есть edit-ы и т.д.

 
Код:
DLL_EXPORT  void SetParentForm (TForm* frm)//експортируемая ф-ция
{
  frm->Parent = FormMain->Parent;
  frm->Show();  //frm->Visible = true;
  ..
}

==2.dll==
 
Код:
SetParentForm(MainForm2);//Передача в  1-ю DLL указателя на форму
  ...

В такой конструкции не работает табуляция и есть еще глюки с Edit-ми,
когда жмешь пр. кн. мыши. Выскакивает сообщение что-типо "Not has parent window".
19K
21 февраля 2007 года
Termi_uc
33 / / 13.02.2007
Цитата: MYTH777
 
Код:
DLL_EXPORT  void SetParentForm (TForm* frm)//експортируемая ф-ция
{
  frm->Parent = FormMain->Parent;
  frm->Show();  //frm->Visible = true;
  ..
}


А ты уверен, что FormMain->Parent существует.:confused: Хотя даже если FormMain->Parent == NULL, не должны лшибки лезть.

Проверь существуетли FormMain, на момент выполнения SetParentForm, и есть ли у него FormMain->Parent.

Или пиши так

 
Код:
DLL_EXPORT  void SetParentForm (TForm* frm)//експортируемая ф-ция
{
  if(!FormMain || !fmr){/*ShowMessage("no one of windows"); */return;}
  frm->Parent = FormMain;//FormMain->Parent;
  frm->Show();  //frm->Visible = true;
  ..
}

и будет тебе счастье:D
или так
 
Код:
DLL_EXPORT  void SetParentForm (HWND* wnd)//експортируемая ф-ция
{
  if(!FormMain || !wnd){/*ShowMessage("no one of windows"); */return;}
  ::SetParent(wnd, FormMain->Handle);//FormMain->Parent->Handle;
  ::ShowWindow(wnd, SW_SHOW);
  ..
}


И вообще, если программа которая запускает эти 2 DLL'ки знает об обоих формах, то лучше в программе напиши процедурку типа
 
Код:
void SetParentForm(HWND* child, HWND* newParent);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог