Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Как вызвать форму из 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
14-1134305309
AllWeyt
2005-12-11 15:48
2006.01.01
Проекты


5-1120107928
Другой Дмитрий
2005-06-30 09:05
2006.01.01
Как инициализировать наследуемые поля абстрактных классов?


14-1134186110
Alexe_y
2005-12-10 06:41
2006.01.01
Vb.net и delphi


2-1134813228
oSa
2005-12-17 12:53
2006.01.01
Приведение типов


5-1119509948
Другой Дмитрий
2005-06-23 10:59
2006.01.01
Мне необходимо отследить переименование проекта, для чего...