Форум: "Основная";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизФорма и 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c