Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.22;
Скачать: CL | DM;

Вниз

Вызов формы из DLL на KOL в приложении на VCL   Найти похожие ветки 

 
Vitaly ©   (2008-04-13 16:09) [0]

Подскажите пожалуйста,
требуется вызвать немодальную форму из DLL на KOL в приложении на VCL. Форма в DLL создается один раз (при загрузке библиотеки), а потом нужно, чтобы ее можно было скрывать и показывать, когда это необходимо. Форма в DLL одна - т.е. как бы главная, поэтому скрыть ее без уничтожения не получается...
И как сделать так, чтобы вызываемая форма была частью приложения - без отдельной кнопки в панели задач?


 
SPeller (work)   (2008-04-14 04:31) [1]

Для каждой манипуляции с формой экспортируешь из своей длл функцию, и в этих функциях управляешь формой как хочешь. Главное - никаких манипуляций в основном приложении с объектами и строками, которые ты создал в длл. И наоборот. Чтобы небыло кнопки в таскбаре - изучай стили окна WS_xxx и WS_EX_xxx.


 
Vitaly ©   (2008-04-14 20:27) [2]

Спасибо за подсказку про стили! А вот про экспортирование фунций не понял... т.е. если вызвать Form.Hide (где Form - форма в DLL) в основном приложении, то ошибки не будет?

type
 PDSPForm = ^TDSPForm;
 TDSPForm = object(TControl)
 ...
 end;

...

DSPForm := PDSPForm(NewForm( Applet, "Winamp DSP Wrapper" ));
DSPForm.Icon := THandle(-1);
DSPForm.Width := 300;
DSPForm.Height := 388;

Run(PControl(DSPForm));
DSPForm.Hide; // тут происходит ошибка


 
Danger ©   (2008-04-15 09:10) [3]


> Vitaly ©   (14.04.08 20:27) [2]
> Спасибо за подсказку про стили! А вот про экспортирование
> фунций не понял... т.е. если вызвать Form.Hide (где Form
> - форма в DLL) в основном приложении, то ошибки не будет?


Нет, в проекте самой DLL пишете, чтобы при при загрузке DLL инициализировалась форма DSPForm и создавались контролы, которые вам надо.  Далее, делаете в модуле DLL экспортируемую функцию типа:

procedure MyDLLFormHide; stdcall;
begin
DSPForm.Hide;
end;

exports MyDLLFormHide;


и вызываете из основного приложения эту экспортируемую функцию, НЕ обращаясь напрямую к методам и свойствам объекта формы в DLL. Вообще, объекты, созданные Вами в DLL и объекты основной программы не должны обращаться друг к другу напрямую, недавно об этом писали ( http://delphimaster.net/view/11-1208152039/ ).



Страницы: 1 вся ветка

Текущий архив: 2009.11.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
11-1207992046
Фунтик
2008-04-12 13:20
2009.11.22
Delphi 7 + KOL, проблема


2-1254797177
Серый
2009-10-06 06:46
2009.11.22
как распечатать запрос Adoquery


15-1253880513
Kerk
2009-09-25 16:08
2009.11.22
Рабсила vs труд


8-1200489157
NaRuTo
2008-01-16 16:12
2009.11.22
Преобразование времени


1-1225102590
apic
2008-10-27 13:16
2009.11.22
Рисунки в подсказках