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

Вниз

Форма и DLL   Найти похожие ветки 

 
Vitek ©   (2005-11-30 14:34) [0]

Здрасти!
Ситуаия следующая:
в dll (например MyDll) находится форма. В приложении показываю форму из MyDll без проблем. А как сделать чтобы показать эту форму с помощью функции/процедуры которая находится в этом же MyDll???

Помоги мастера.
Заранее благодарен!


 
Alexandr Bydantcev ©   (2005-11-30 14:48) [1]

Э..... не понял вопроса..... А как показать форму из dll, не используя её????


 
Digitman ©   (2005-11-30 15:12) [2]


> В приложении показываю форму из MyDll без проблем


показывай в коде, как именно ты это делаешь ..


 
gdaujk ©   (2005-11-30 15:27) [3]

Для модальной формы. В модуле, посвящённом собственно форме:

procedure ShowYourForm(AppHandle: THandle; aCaption: string); stdcall;

implementation

procedure ShowYourForm;
var
 YourForm: TYourForm;
begin
 Application.Handle := AppHandle;
 ErrorForm := TForm3.Create(Application);
 with YourForm do
   try
     Caption := aCaption;
     Icon.Handle := LoadIcon(0, IDI_ASTERISK);
     ShowModal;
   finally
     Free;
   end;
end;


В проекте DLL, содержацей эту форму:

exports
 ShowYourForm;


И наконец в твоём приложении:

 ShowErrorForm(MainFormHandle, Caption);

Ну а про явную загрузку DLL и импорт из неё функций я писать не буду, в вопросе этого нет.

PS: создание немодальной формы несколько отличается от того, что написанно выше...


 
Vitek ©   (2005-12-01 05:14) [4]

а как загрузить форму не модально???


 
gdaujk ©   (2005-12-01 06:22) [5]

Зачем грузить немодальную форму из DLL? Просвятите, а ?

Суть метода почти что таже. Надо изменить функцию вызова:

function ShowYourForm(AppHandle: THandle; aCaption: string; aName: array of string;
                       aValue: array of Real): Longint; stdcall;
var
 YourForm: TYourForm;
begin
 Application.Handle := AppHandle;
 YourForm := TYourForm.Create(Application);
 Result := Longint(YourForm);
 with YourForm do
   begin
     Caption := aCaption;
     Icon.Handle := LoadIcon(0, IDI_ASTERISK);
     Show;
   end;
end;


Дописать функцию закрытия формы:

procedure CloseYourForm(aForm: Longint); stdcall;
begin
 if aForm > 0
   then TYourForm(aForm).Release;
end;


При вызове ShowYourForm надо сохранить результат, а при желини закрыть форму воспользоваться им в качестве параметра CloseYourForm.

PS: сам не пробовал :-)))


 
vitek ©   (2005-12-01 06:47) [6]

Заранее благодарен


 
gdaujk ©   (2005-12-01 10:41) [7]

>>vitek ©   (01.12.05 06:47) [6]

>Заранее благодарен


В смысле: "Еще очень рано, 06:47, но я уже очень вам благодарен."?



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
2-1133884135
VitGun
2005-12-06 18:48
2005.12.25
QuickReport. Печать текущей записи.


2-1134038542
kyn66
2005-12-08 13:42
2005.12.25
Данные из таблицы показать в ComboBox


8-1121626571
ronyn
2005-07-17 22:56
2005.12.25
Как DS Pack ом простые фильмы и музыка проигрываются?


2-1133790894
kay
2005-12-05 16:54
2005.12.25
Не обновляется MDIChildCount


14-1133361055
Lexer
2005-11-30 17:30
2005.12.25
Глюк Delphi 4-7 при работе с define