Конференция "KOL" » Вызов формы из DLL на KOL в приложении на VCL [Delphi, Windows]
 
  • Vitaly © (13.04.08 16:09) [0]
    Подскажите пожалуйста,
    требуется вызвать немодальную форму из DLL на KOL в приложении на VCL. Форма в DLL создается один раз (при загрузке библиотеки), а потом нужно, чтобы ее можно было скрывать и показывать, когда это необходимо. Форма в DLL одна - т.е. как бы главная, поэтому скрыть ее без уничтожения не получается...
    И как сделать так, чтобы вызываемая форма была частью приложения - без отдельной кнопки в панели задач?
  • SPeller (work) (14.04.08 04:31) [1]
    Для каждой манипуляции с формой экспортируешь из своей длл функцию, и в этих функциях управляешь формой как хочешь. Главное - никаких манипуляций в основном приложении с объектами и строками, которые ты создал в длл. И наоборот. Чтобы небыло кнопки в таскбаре - изучай стили окна WS_xxx и WS_EX_xxx.
  • Vitaly © (14.04.08 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 © (15.04.08 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://pda.delphimaster.net/?id=1208152039&n=10 ).
 
Конференция "KOL" » Вызов формы из DLL на KOL в приложении на VCL [Delphi, Windows]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]