Конференция "Основная" » DLL немодальный вызов, MDI [D7, Win2k, WinXP]
 
  • IntruderLab (12.03.08 16:15) [20]

    > Сергей М. ©   (11.03.08 19:25) [16]
    >
    >
    > > если имеется ввиду bpl
    >
    >
    > Касаемо твоей вожделенной "dll с формой" - нет, не имеется)
    >
    > Форма твоя как родилась в твоей dll, так там и будет жить,
    >  не волнуйся)


    Жду руководящих действий или ссылок на то как :)
  • Сергей М. © (12.03.08 16:18) [21]

    > Жду руководящих действий


    Уже даны в достаточном объеме в [10]
  • IntruderLab (13.03.08 08:52) [22]

    > Сергей М. ©   (12.03.08 16:18) [21]
    >
    >
    > > Жду руководящих действий
    >
    >
    > Уже даны в достаточном объеме в [10]


    Есть вводная информация как с этим работать? Или лучше элементарные примерчики?
  • Сергей М. © (13.03.08 09:06) [23]

    > как с этим работать?


    С чем ?

    Сказано же - простейшее решение проблемы состоит из двух простейших же пунктов:

    1. В исх.кодах своих exe- и dll-проектов убираешь все касаемое параметра Appl, т.е. передача этого параметра не нужна вообще.

    2. Во всех своих проектах устанавливаешь крыжик
     Project->Options..->Packages->Build With Run-Time Packages
    и после этого полностью ребилдишь эти проекты.

    Все !! Больше никаких телодвижений делать не нужно.

    Что еще не понятно ?)
  • IntruderLab (13.03.08 10:14) [24]
    Попробую
  • IntruderLab (13.03.08 12:29) [25]
    Сергей М. ©   (13.03.08 09:06) [23]

    > как с этим работать?

    С чем ?

    Сказано же - простейшее решение проблемы состоит из двух простейших же пунктов:

    1. В исх.кодах своих exe- и dll-проектов убираешь все касаемое параметра Appl, т.е. передача этого параметра не нужна вообще.

    2. Во всех своих проектах устанавливаешь крыжик
    Project->Options..->Packages->Build With Run-Time Packages
    и после этого полностью ребилдишь эти проекты.

    Все !! Больше никаких телодвижений делать не нужно.

    Что еще не понятно ?)

    Вобщем - то сделал.... как мне теперь реализовать MDI?
  • Сергей М. © (13.03.08 12:32) [26]

    > как мне теперь реализовать MDI?


    Ты его уже реализовал - Application.MainForm у тебя fsMDIForm, что и является осн.условием для создания MDI-приложения при поддержке VCL.
  • IntruderLab (13.03.08 12:37) [27]
    Вобщем все перебьюлдил, все работает, теперь что делать?
  • IntruderLab (13.03.08 12:38) [28]
    Как мне указать для форм, находящихся в dll что exe форма является для них материнской?
  • Сергей М. © (13.03.08 12:50) [29]

    > IntruderLab   (13.03.08 12:38) [28]


    Зачем ?
    Все уже указано и все работает, ты сам же это сказал в [27].
  • IntruderLab (13.03.08 13:22) [30]
    дак млин не в MDi режиме работает
  • Сергей М. © (13.03.08 13:38) [31]

    > не в MDi режиме работает
    >


    Убедись, что Application.MainForm.FormStyle = fsMDIForm
  • IntruderLab (13.03.08 13:50) [32]

    > Сергей М. ©   (13.03.08 13:38) [31]
    >
    >
    > > не в MDi режиме работает
    > >
    >
    >
    > Убедись, что Application.MainForm.FormStyle = fsMDIForm


    это exe? а как указать в dll?
  • Maxick © (13.03.08 13:54) [33]
    В свойствах формы: FormStyle ставишь MDiForm. А как делается если все находится в экзэ? точно также и тут.
  • Сергей М. © (13.03.08 14:06) [34]

    > это exe? а как указать в dll?


    Сказка про белого бычка)

    Говорили-говорили про единый объект Application - и все впустую)

    Ты пойми, что при BwRTP-опции объект Application и, соотв-но, объект Application.MainForm и в ехе и в длл - это один и тот же объект !
  • IntruderLab (13.03.08 14:07) [35]
    То есть в этом случае уже не надо в dll передавать хендлы Application и Screen?
  • IntruderLab (13.03.08 14:09) [36]

    > Сергей М. ©   (13.03.08 14:06) [34]
    >
    >
    > > это exe? а как указать в dll?
    >
    >
    > Сказка про белого бычка)
    >
    > Говорили-говорили про единый объект Application - и все
    > впустую)
    >
    > Ты пойми, что при BwRTP-опции объект Application и, соотв-
    > но, объект Application.MainForm и в ехе и в длл - это один
    > и тот же объект !


    Сергей, сорри... просто привык к одной системе - очень сложно представить как в MDI просто это переделать - вот и куча вопросов из -за этого... Сейчас попробую
  • IntruderLab (13.03.08 14:51) [37]
    Не понимаю, пишет - Нет возможности создать форму, ни одна MDI форма не является активной, все таки хоче указания Application
  • IntruderLab (13.03.08 15:02) [38]
    Хелп, ничего не понимаю. Напишите просто тупо как вызвать форму из DLL чтобы она стала Child для mdi
    у меня в exe frmMain.FormStyle := fsMDIForm;
    в dll frmTest.FormStyle := fsMDIChild;
    функция вызова формы frmTest из dll
    function ShowTest:LongInt;StdCall;
    var frmTest : TfrmTest;
    begin
    Result := LongInt(TfrmTest.Create(Application); --навреное тут не так, как сделать не знаю
    end;
    в exe:
    var LibHandle : THandle;
    ****
    LibHandle := LoadLibrary('iHercules.dll');
    if LibHandle <> 0 then
    begin
    @ShowTest := GetProcessAddress(LibHandle,'ShowTest);
    ShowTest;
    end;
    FreeLibrary(LibHandle);

    Что я не так делаю.... в не MDI приложении с модальным вызовом форм все работет, не могу понять как это реализуется в MDI
  • Сергей М. © (13.03.08 15:08) [39]
    Чему равно

    Application.MainForm

    непосредственно перед вызовом

    TfrmTest.Create(Application)

    ?
 
Конференция "Основная" » DLL немодальный вызов, MDI [D7, Win2k, WinXP]
Есть новые Нет новых   [134484   +49][b:0][p:0.001]