Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Вниз

Вызов формы из 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 вся ветка

Форум: "KOL";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1254484709
mops
2009-10-02 15:58
2009.11.22
выключение windows


15-1253971366
Джони
2009-09-26 17:22
2009.11.22
DAC for MySQL 2.7.2 Free Trial (Объясните пжл)


2-1254897470
romichshos
2009-10-07 10:37
2009.11.22
Вычисляемые поля


15-1252279311
Дмитрий С
2009-09-07 03:21
2009.11.22
Метод защиты от создания экранок.


2-1254932240
Johnnnnn
2009-10-07 20:17
2009.11.22
Сменить директорию диалога Open?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский