Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизКак вызвать форму из dll? Найти похожие ветки
← →
_Lucifer_ © (2005-12-14 14:22) [0]Местный FAQ не очень-то информативен по этому поводу. Поиск в Интернете столь же результативен.
В дополнение хочу заметить, что моя dll это COM Add-ins для MS Word.
← →
Игорь Шевченко © (2005-12-14 14:27) [1]
> В дополнение хочу заметить, что моя dll это COM Add-ins
> для MS Word.
Елманова, Трепалин, Тенцер - Delphi 6 и COM
Статьи Тенцера на сайте http://www.podgoretsky.com
← →
_Lucifer_ © (2005-12-14 14:49) [2]То, что это add-in это вторично. Первично это то, что мне надо вызвать из dll форму, которая находится в dll.
← →
Vlad © (2005-12-14 14:57) [3]
> _Lucifer_ © (14.12.05 14:49) [2]
Так как ты собираешься использовать свою dll - как COM сервер или как простую библиотеку?
← →
_Lucifer_ © (2005-12-14 15:03) [4]Вообще она COM сервер. Но мне надо вызвать форму с настройками из этой dll (сама форма в dll + вызывается она dll-кой).
← →
Vlad © (2005-12-14 15:30) [5]
> _Lucifer_ © (14.12.05 15:03) [4]
Форму из этой dll можно вызвать разными способами, например, с помощью экспортируемой функции (через обычный механизм работы с dll) или с помощью метода некого COM объекта. Определись, как тебе нужно.
← →
Digitman © (2005-12-14 15:44) [6]
> Местный FAQ не очень-то информативен по этому поводу. Поиск
> в Интернете столь же результативен
откуда ж они возьмутся, "информативность" и "результативность", если ты даже не сподобился конкретизировать, то ли DLL-код вызывает что-то там где-то там (в рез-те чего начинает фигурировать понятие "объект-форма"), то ли наоборот
← →
_Lucifer_ © (2005-12-14 15:47) [7]Мне нужно, чтобы в dll, в обработчике нажатия на созданную мной кнопку на панели инструментов MS Word, была некая конструкция, вызывающая форму, которая хранится в этом же dll.
← →
Digitman © (2005-12-14 15:50) [8]
> _Lucifer_ © (14.12.05 15:47) [7]
ну вот теперь худо ли бедно ли понятно)...
так, собственно, в чем загвоздка при сем раскладе ?
← →
_Lucifer_ © (2005-12-14 15:51) [9]Так:
1. Есть dll - COM Add-in
2. В этой dll есть процедура создания кнопки на панели инструментов MS Word
3. В этой dll есть форма
Надо:
1. вызвать форму из dll процедурой/функцией/чем-то иным, которая находится в dll
← →
Digitman © (2005-12-14 15:58) [10]в обработчике события нажатия этой самой кнопки как обычно написать нечто вида
SomeForm := TSomeForm.Create(владелец);
или VCL-объекты-формы нынче стало не модно таким образом создавать ?)
или у тебя иные проблемы ?
← →
_Lucifer_ © (2005-12-14 16:02) [11]Из обнаруженных в Интернете статей следует, что я должен располагать указателем (handle) на приложение, которому будет принадлежать сия форма. Мне что теперь указатель на MS Word получать требуется?
← →
_Lucifer_ © (2005-12-14 16:09) [12]Form1:=TForm1.Create(<указатель>);
Как получить указатель на MS Word? Есть у меня Host, которое у меня WordApplication. Но у этого Host нету параметра handleю
← →
Игорь Шевченко © (2005-12-14 16:12) [13]_Lucifer_ © (14.12.05 15:51) [9]
Надо понимать, что указанную в [1] литературу ты уже прочитал ?
← →
Digitman © (2005-12-14 16:14) [14]
> _Lucifer_ © (14.12.05 16:02) [11]
> Из обнаруженных в Интернете статей следует, что я должен
> располагать указателем (handle) на приложение, которому
> будет принадлежать сия форма
укажи и цитируй хотя бы один источник, где ты прочел сию несуразность ..
← →
_Lucifer_ © (2005-12-14 16:15) [15]Игорь Шевченко © (14.12.05 16:12) [13]
"Delphi и COM" нет, а мнение о статье Тенцера скорее негативное.
← →
Vlad © (2005-12-14 16:29) [16]
> _Lucifer_ © (14.12.05 16:15) [15]
> "Delphi и COM" нет
А зря, советую приобрести. Там Add-ins целая глава посвящена, причем подробно и доступным языком.
← →
_Lucifer_ © (2005-12-14 16:36) [17]Размещение модальных форм в dll.
library ModelF;
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
Unit1 in "Unit1.pas" {Form1};
function ShowMyDialog(Msg: PChar): Boolean; stdcall;
begin
{Создаем экземпляр Form1 формы TForm1}
Form1 := TForm1.Create(Application);
{В Label1 выводим сообщение Msg}
Form1.Label1.Caption := StrPas(Msg);
{Возвращаем True если нажата OK (ModalResult = mrOk)}
Result := (Form1.ShowModal = mrOk);
Form1.Free;
end;
exports ShowMyDialog;
begin
end.
http://delphi.olympus.ru/dk/helloword/usesdll.htm
http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/md_dll.htm
http://www.superq.ru/comments.php?id=2062_0_1_0_C1
И ещё в Тейксера, Пачеко.
А что тогда такое "Application"?
← →
Plotnick (2005-12-14 16:46) [18]У dll есть свой Application. Смело можешь указать. Смысла правда в этом особого нет, но не возбраняется.
← →
_Lucifer_ © (2005-12-14 17:01) [19]http://rubooks.jino-net.ru/books/book-05.11.28-Delphi-COM.htm
← →
_Lucifer_ © (2005-12-15 11:56) [20]А ларчик просто открывался:
Form1:=TForm1.Create(Form1);
Form1.ShowModal();
← →
Leonid Troyanovsky © (2005-12-15 12:49) [21]
> _Lucifer_ © (15.12.05 11:56) [20]
> А ларчик просто открывался:
> Form1:=TForm1.Create(Form1);
Странно как-то открывается.
Вполне достаточно nil.
--
Regards, LVT.
← →
Джо © (2005-12-15 12:57) [22]
> [20] _Lucifer_ © (15.12.05 11:56)
> А ларчик просто открывался:
> Form1:=TForm1.Create(Form1);
> Form1.ShowModal();
Ой.
← →
_Lucifer_ © (2005-12-15 13:05) [23]Leonid Troyanovsky © (15.12.05 12:49) [21]
Это была не моя идея. Но лучшее из найденого/предложеного.
Джо © (15.12.05 12:57) [22]
Что?
← →
Джо © (2005-12-15 13:08) [24]Сам то понял, что написал и какой в этом смысл?
← →
Leonid Troyanovsky © (2005-12-15 13:12) [25]
> _Lucifer_ © (15.12.05 13:05) [23]
> Это была не моя идея. Но лучшее из найденого/предложеного.
Ладно уж, заучивай наизусть:
with TForm1.Create(nil) do
try
..
x := ShowModal;
..
finally
Free;
end;
--
Regards, LVT.
← →
Leonid Troyanovsky © (2005-12-15 13:14) [26]
> _Lucifer_ © (14.12.05 16:15) [15]
> "Delphi и COM" нет, а мнение о статье Тенцера скорее негативное.
Это, пардон, почему?
--
Regards, LVT.
← →
_Lucifer_ © (2005-12-15 13:34) [27]Джо © (15.12.05 13:08) [24]
Вроде да.
Leonid Troyanovsky © (15.12.05 13:12) [25]
Пожалуй будем использовать ваш вариант.
← →
_Lucifer_ © (2005-12-15 13:43) [28]Leonid Troyanovsky © (15.12.05 13:14) [26]
Не понравилась. С первого разу не пошло.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.012 c