Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизВызов процедуры родительского окна из формы в DLL. Как? Найти похожие ветки
← →
alienserg (2004-04-15 17:36) [0]Приложение динамически прилинковывает DLL, в которой находится дополнительная форма. Главная форма создает дополнительную.
Из этой дополнительной формы по определенным событиям надо вызывать процедуру главной формы.
Как примерно это сделать(вызов процедуры главной формы из дополнительной формы)?
Можно ли вообще?
← →
alienserg (2004-04-15 17:36) [0]Приложение динамически прилинковывает DLL, в которой находится дополнительная форма. Главная форма создает дополнительную.
Из этой дополнительной формы по определенным событиям надо вызывать процедуру главной формы.
Как примерно это сделать(вызов процедуры главной формы из дополнительной формы)?
Можно ли вообще?
← →
Юрий Зотов © (2004-04-15 17:56) [1]Передайте в DLL адрес callback-процедуры (находящейся в EXE) и из DLL вызывайте ее - а из нее уже можете вызывать что угодно.
← →
Юрий Зотов © (2004-04-15 17:56) [1]Передайте в DLL адрес callback-процедуры (находящейся в EXE) и из DLL вызывайте ее - а из нее уже можете вызывать что угодно.
← →
VMcL © (2004-04-15 17:57) [2]1. У форм, как у других классов, не бывает процедур, у них - методы.
2. Если для создания доп. формы используется функция, импортируемая из DLL, то расширь эту функцию: добавь параметр - адрес callback-функции.
eg.TMyCallback = procedure of object;
// в DLL
function CreateForm(...): ...; stdcall;
изменяем наfunction CreateForm(...; ACallback: TMyCallback): ...; stdcall;
//в EXE
TFormXYZ = class(TForm)
...
procedure Callback; // параметры и возвращ. значение - как у TMyCallback
end;
вызовCreateForm(...)
в одном из методов формы TFormXYZ изменяем наCreateForm(..., Callback);
← →
VMcL © (2004-04-15 17:57) [2]1. У форм, как у других классов, не бывает процедур, у них - методы.
2. Если для создания доп. формы используется функция, импортируемая из DLL, то расширь эту функцию: добавь параметр - адрес callback-функции.
eg.TMyCallback = procedure of object;
// в DLL
function CreateForm(...): ...; stdcall;
изменяем наfunction CreateForm(...; ACallback: TMyCallback): ...; stdcall;
//в EXE
TFormXYZ = class(TForm)
...
procedure Callback; // параметры и возвращ. значение - как у TMyCallback
end;
вызовCreateForm(...)
в одном из методов формы TFormXYZ изменяем наCreateForm(..., Callback);
← →
Юрий Зотов © (2004-04-15 18:56) [3]> VMcL © (15.04.04 17:57) [2]
А что будет сидеть в Data? Откуда возьмется Self?
← →
Юрий Зотов © (2004-04-15 18:56) [3]> VMcL © (15.04.04 17:57) [2]
А что будет сидеть в Data? Откуда возьмется Self?
← →
VMcL © (2004-04-15 19:00) [4]>>Юрий Зотов © (15.04.04 18:56) [3]
"в одном из методов формы TFormXYZ"
?
← →
VMcL © (2004-04-15 19:00) [4]>>Юрий Зотов © (15.04.04 18:56) [3]
"в одном из методов формы TFormXYZ"
?
← →
alienserg (2004-04-17 02:48) [5]есть ли ограничение на тип передаваемых параметров в случае stdcall?
При попытке передать TStringList через callback аппликация выдает exception...
Если же передаю String, то все нормально проходит.
← →
alienserg (2004-04-17 02:48) [5]есть ли ограничение на тип передаваемых параметров в случае stdcall?
При попытке передать TStringList через callback аппликация выдает exception...
Если же передаю String, то все нормально проходит.
← →
VMcL © (2004-04-19 10:28) [6]>>alienserg (17.04.04 02:48) [5]
>есть ли ограничение на тип передаваемых параметров
Да. Но это не зависит от соглашения о вызовах (stdcall, register, pascal, cdecl, ...).
← →
VMcL © (2004-04-19 10:28) [6]>>alienserg (17.04.04 02:48) [5]
>есть ли ограничение на тип передаваемых параметров
Да. Но это не зависит от соглашения о вызовах (stdcall, register, pascal, cdecl, ...).
← →
VMcL © (2004-04-19 10:32) [7]>>alienserg (17.04.04 02:48) [5]
Подробнее см.
http://podgoretsky.com/ftp/Docs/Delphi/D5/Delphi5vol1.pdf (~5 МБ)
глава 9, если не ошибаюсь.
← →
VMcL © (2004-04-19 10:32) [7]>>alienserg (17.04.04 02:48) [5]
Подробнее см.
http://podgoretsky.com/ftp/Docs/Delphi/D5/Delphi5vol1.pdf (~5 МБ)
глава 9, если не ошибаюсь.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c