Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.011 c
2-1134413280
Nikos
2005-12-12 21:48
2006.01.01
Ошибка при компиляции


5-1120549619
Mutex
2005-07-05 11:46
2006.01.01
Найти название свойства для csSubComponent через OpenToolsAPI


2-1134663642
_white_
2005-12-15 19:20
2006.01.01
Процессы или как устоена ArtMoney


8-1122063113
Retryator
2005-07-23 00:11
2006.01.01
Графические Аппертуры


14-1133880221
Зм1й
2005-12-06 17:43
2006.01.01
Знатокам MaxScript





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