Форум: "Основная";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
ВнизКак работать с формами в DLL? Найти похожие ветки
← →
Art1 (2002-02-28 12:24) [0]Как создать форму в DLL? Как вызвать эту форму из программы и получить доступ ко всем объектам (компонентам), находящимся на форме?
← →
SDS (2002-02-28 12:47) [1]В DLL добавляешь форму (FILE|NEW|Form), пишешь например такую функцию
function GetFormFromDLL(AHandle: THandle) : longint; stdcall;
var
fmForm : TfmForm;
begin
Application.Handle := AHandle;
fmForm := TfmForm.Create(Application);
Result := longint(fmForm);
end;
Она возвращает указатель (в виде целочисленного значения) на форму, созданную в DLL
Эту функцию экспрортируешь
exports
GetFormFromDLL;
В программе описываешь функцию как внешнюю
и пишешь код
procedure TfmMainForm.Button1Click(Sender: TObject);
var
Form : TForm;
i : integer;
begin
Form : TForm;
begin
Form := TForm(GetFormFromDLL(Application.Handle);
for i := 0 to Form.ComponentCountend do
if Form.Components is TButton then
ShowMessage("Кнопка");
Form.Free;
end;
← →
SDS (2002-02-28 12:50) [2]Ошибка, спешил
Вместо
Form : TForm;
i : integer;
begin
Form : TForm;
begin
Form := TForm(GetFormFromDLL(Application.Handle);
for i := 0 to Form.ComponentCountend do
for i := 0 to Form.ComponentCountend do
if Form.Components is TButton then
ShowMessage("Кнопка");
Нужно
Form : TForm;
i : integer;
begin
Form := TForm(GetFormFromDLL(Application.Handle);
for i := 0 to Form.ComponentCount - 1 do
if Form.Components[i] is TButton then
ShowMessage("Кнопка");
← →
drpass (2002-02-28 14:34) [3]В Delphi6 передавать указатель на Application из главной программы необязательно.
← →
Art1 (2002-02-28 16:03) [4]Ха. Спасибо. Кое-что пришлось переделать, но суть ясна и всё работает.
Если не тяжело, подскажите пожалуйста как из загруженной (динамически) DLL-ки передать значение (к примеру TEdit1.Text или CheckBox1.Checked) в основную программу, а то
for i := 0 to Form.ComponentCount - 1 do
if Form.Components[i] is TButton then
ShowMessage("Кнопка");
ничего не дает.
И ещё, можно ли добраться до обработчика ситуаций (к примеру CheckBox1.OnClick) формы DLL-ки из программы?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c