Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Вниз

помогите с OLE на Delphi   Найти похожие ветки 

 
SaperXL   (2002-08-24 12:18) [0]

В качестве OLE сервера выступает MapInfo. Он поддерживает некоторую объектную модель:
-Сервер
-Карты (OLE связанный объект, в джанном случае карта)
-Переменные (у каждой карты свои)
У каждого объекта соответственно есть свой набор методов (некоторые с параметрами, например
метод Do(s:string), который в зависимости от параметра заствляет изменяться карту -
связанный OLE объект) и свойства, но всё это есть у MapInfo, проблема заключается в том,
чтобы перенести всё это в Delphi. Если бы Я писал на VisualBasic, то было бы так:
Dim mi As Object

Sub Form_Load( )
Set mi = CreateObject("MapInfo.Application")
mi.Do "Set Application Window " & Form1.hwnd
End Sub

Если бы Я писал на Visual C, то сначала Я бы присоединил модуль прилагающийся к MapInfo
(#include MapInfow.h) тем самым дав своему приложению знания о классе DMapInfo и далее

DMapInfo mi;
mi.Do("Set Application Window " + Form1.hwnd)

Обратите внимание в результате каки-то "таинственных" заклинаний в обоих случаях Я получаю
объект (mi) который знает о всех методах поддерживаемых OLE сервером. (Особенно круто на
Басике).

Так вот хотелось бы также получать объект и в Delphi. Через OLEContainer не получается -
он не знает о методах поддерживаемых OLE сервером. Помогите пожалуйста...
Речь шла об OLE Automation, а не об OLE внедрении.


 
DiamondShark   (2002-08-24 13:20) [1]

На дельфе ничуть не хуже чем на васике.

var
mi: variant;
begin
mi := CreateOleObject("MapInfo.Application");
// а дальше совсем как в васике


 
SaperXL   (2002-08-24 15:40) [2]

Да, спасибо - помогло очень.
Да Я и не говорю, что Басик круче просто так для примера как в другом языке...
А с OLEContainer"ом всё-таки что-то не так: у него же есть свойство OLEObject которое должно указывать на OLE объект (у нас это mi), а он куда-то указывает, а про интерфейс (методы и свойства) объекта ничего не знает. Ну да ладно - он (OLEContainer) мне всё равно не нужен. Спасибо.


 
Набережных С.   (2002-08-24 16:09) [3]

Плюс два пути:
1)Import type librare
2)Ручной перевод заголовочного файла на Pascal


 
DiamondShark   (2002-08-24 18:29) [4]


> А с OLEContainer"ом всё-таки что-то не так: у него же есть
> свойство OLEObject которое должно указывать на OLE объект
> (у нас это mi), а он куда-то указывает, а про интерфейс
> (методы и свойства) объекта ничего не знает


Оно указывает на интерфейс IDispatсh -- базовый интерфейс всех объектов автоматизации.

Variant тоже может содержать ссылку IDispatch, просто компилятор автоматически генерирует код позднего связывания для variant через вызовы IDispatch.GetIDsOfNames и IDispatch.Invoke

Естественно, в этом случае никакого контроля типов на этапе компиляции + overheat на позднее связывание.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-14016
_reset
2002-08-26 12:44
2002.09.05
MDI Modal


1-14163
3asys
2002-08-25 14:40
2002.09.05
Как получить коорднаты выделенного фрагмента в TWebBrowser?


1-14005
EugenCFG
2002-08-26 10:22
2002.09.05
Мастера... подскажите... Можно ли TMemo сделать как TEdit


1-14149
antoniz
2002-08-22 09:00
2002.09.05
Подскажите как из обычного приложения подключить ActiveX форму


14-14227
AL2002
2002-08-06 16:24
2002.09.05
Кто каким файловым менеджером пользуется?





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