Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Програмное закрытие формы из Dll


Страницы:   1 2 3

206196131 ©   (2008-03-29 20:05:00) 

есть приложение оно подгружает dll
в dll  2 формы, загружается сразу форма1

после разных всяких проверок либо открывается форма2 либо не открыватся.

   в родительском окне    
   Application.CreateForm(Tform1,form1);    

в form1

if (что с чемто = 1) then
   Application.CreateForm(Tform2,form2)
else
   form1.close;

form1.close вылетает по access  violation at address 12345678 in module my.dll

при этом если закрываеть
  form1 крестиком то никаких  проблем....


Loginov Dmitry   (2008-03-29 22:48:00) [21]

> )) уже что то, здесь и сейчас это както решаемо ?


Тебе решать!


206196131   (2008-03-29 22:46:00) [22]

)) уже что то, здесь и сейчас это както решаемо ?

 или все переписывать


Loginov Dmitry   (2008-03-29 22:40:00) [23]

> вот незадача... application в dll и в хост приложении разный
> бааалин... сколько можно твердить сохдавай bpl, там application
> одинаковый. и да будет тебе известно что bpl никакого, ну
> ни малейшего абсолютно, отношения к com не имеет. эта та
> же самая dll. просто грузится специальными средствами, благодара
> которым например TForm из bpl тот же самый класс что и Tform
> в хлст приложении. и еще много вкусностей о которых довольно
> подробно описано в справке.


зачем bpl создавать? Куда проще поставить заветную галочку в опциях обоих проектов!


Loginov Dmitry   (2008-03-29 22:38:00) [24]

1. приведи код инициализации dll-ки.
2. попробуй переименовать в инспекторе объектов форму Form1 во что-нибудь другое (например Form3)


206196131   (2008-03-29 22:38:00) [25]

руками form1 закрывается без проблем
а по form1.Close нет


Palladin   (2008-03-29 22:37:00) [26]

вот незадача... application в dll и в хост приложении разный бааалин... сколько можно твердить сохдавай bpl, там application одинаковый. и да будет тебе известно что bpl никакого, ну ни малейшего абсолютно, отношения к com не имеет. эта та же самая dll. просто грузится специальными средствами, благодара которым например TForm из bpl тот же самый класс что и Tform в хлст приложении. и еще много вкусностей о которых довольно подробно описано в справке.


206196131   (2008-03-29 22:28:00) [27]

обе формы из  dll  

ничего не должно происходить, должна зарыться форма form1

после того как отыкрыта  form2


Loginov Dmitry   (2008-03-29 22:19:00) [28]

> var
> form2:Tform2;
> begin
> form2:=  Tform2.Create(application);
> form2.show;
> form1.Close;//слетат тут
> end;
>
> так ничего не меняется


что такое TForm1? Где данный объект создается (в EXE или DLL)?
где создается TForm2?
Что у тебя должно происходить при вызове form1.Close?


Loginov Dmitry   (2008-03-29 22:15:00) [29]

> Application.CreateForm(Tform2,form2)
> на последнии момент было так, есть другие предложения


Дочерние окна fsMDIChild обычно создают следующим образом:
Tform2.Create(Owner);
и никаких переменных типа form2не используют. Можно конечно использовать, но только если будет создана всего одна форма Tform2.


206196131   (2008-03-29 22:13:00) [30]

var
form2:Tform2;
begin
form2:=  Tform2.Create(application);
form2.show;
form1.Close;//слетат тут
end;

так ничего не меняется


206196131   (2008-03-29 22:06:00) [31]

Application.CreateForm(Tform2,form2)
на последнии момент было так, есть другие предложения


Loginov Dmitry   (2008-03-29 21:49:00) [32]

> обычное fsMDIForm все остальные окна fsMDIChild


> Application.CreateForm(Tform2,form2)


Это дочернее окно так создается, или что?


> form1.close вылетает по access  violation at address 12345678
> in module my.dll
>
> при этом если закрываеть
>  form1 крестиком то никаких  проблем....


Вот и отлаживай! F7 и F8 рулят! Если не в состоянии, то укажи более ЧЕТКО, в чем проблема? И прислушайся к совету насчет пакетов. Это избавляет от колоссальной доли геморроя, поверь...


206196131   (2008-03-29 21:22:00) [33]

если бы все все умели, половино человечества сидело бы без работы))


Сергей М.   (2008-03-29 21:14:00) [34]

Странно другое - неумение или нежелание пользоваться отладчиком.


206196131   (2008-03-29 21:11:00) [35]

странно то что по крестику форма нормально зарывается ни начто не материться


Сергей М.   (2008-03-29 21:08:00) [36]


> есть конкретная проблема


Эта "проблема" может зависеть от множества факторов !


> неуместны тут ни  blp ни соm


Вот com точно не уместен, а bpl оч даже уместен)


206196131   (2008-03-29 21:05:00) [37]

мужики причем здесь bpl

есть конкретная проблема, программное закрытие формы загруженной из  dll
сама себя форма должна закрыть


и неуместны тут ни  blp ни соm


Palladin   (2008-03-29 21:00:00) [38]

ага... bpl создавать, а не dll. и эффект тот же и все работает.


206196131   (2008-03-29 20:59:00) [39]

Германн вам бы на каком нить irc  канале сидеть трафик гонять  ))


206196131   (2008-03-29 20:57:00) [40]

и не сомниваюсь ))
 но по сути дела есть какие нить предложения, или нет


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо