Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-43023
Anonim
2002-03-01 08:28
2002.03.14
Вирус


7-43205
a
2001-12-09 09:03
2002.03.14
можно ли освободить com порт от мышки на ходу, т.е.


6-43122
Olfi
2001-12-23 15:57
2002.03.14
Привет народ! Кто-нибудь знеает, как можно соединить модемы и передать чего-нибудь по нему?


14-43175
ЕвгенийА
2002-01-31 00:57
2002.03.14
Копирование


1-43022
nick_vstu
2002-03-01 02:40
2002.03.14
Что делает TSomeType.Create?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский