Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
3-1131017250
Георгий
2005-11-03 14:27
2005.12.25
нумерация записей в TQuery


14-1133797267
Antek
2005-12-05 18:41
2005.12.25
Удаление ярлыков с рабочего стола и пуска в Bat файлах


14-1133434723
TUser
2005-12-01 13:58
2005.12.25
СТРИМ


11-1115098181
Боб
2005-05-03 09:29
2005.12.25
Ошибки при компиляции KOLMCK v2.08


2-1134150777
OLEGNik
2005-12-09 20:52
2005.12.25
Как экспортировать процедуры procedure(): overload из dll ?




   Наверх