Главная страница
    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.004 c
14-43185
ilysha
2002-01-27 18:57
2002.03.14
Всего анкет: 3621 мужчин: 3486, женщин: 135


14-43176
Igor_thief
2002-01-30 17:34
2002.03.14
Button


4-43224
kirya85
2002-01-16 08:45
2002.03.14
Как изменить размер окна чужого приложения?


14-43169
Awex
2002-01-31 14:33
2002.03.14
Подскажите плиз, книку Рэя Конопки кто нибудь видел в каком нибудь интернет магазине, и Белеро и Озон и море других просмотрел, так и ненашел.... везде в нулевых остатках.... :(((


1-43079
Neep
2002-02-27 14:09
2002.03.14
OLEConteiner and WORD





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский