OleFunction

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

OleFunction

Сообщение Виталий » 09.04.2015 09:58:31

Всем привет. Есть ли в Лазарусе возможность использования OleFunction(), как это предусмотренно в Делфи в типе Olevariant?
Допустим если я хочу вызвать функцию из СОМ сервера по имени вбитой в Эдит, а не жестко прописанной в программе?

Использую FPC 2.6.4 и Lazarus 1.2.4
Виталий
новенький
 
Сообщения: 40
Зарегистрирован: 05.01.2013 22:33:11

Re: OleFunction

Сообщение sign » 10.04.2015 07:18:02

Из
Код: Выделить всё
//******************************************************************************
//*                    Written by Yuri (aka Yuric74)                           *
//*           http://www.sql.ru/forum/actualthread.aspx?tid=405083             *
//*                 all version at http://yuri.elmeh.ru                        *
//******************************************************************************
unit uOpenOffice;

переделанной местами под Лазарус.
В частности, вот такое
Код: Выделить всё
function TOOWriterCell.GetDataType:TOpenDT;
begin
  Result:=FCellObj.Type;
end;
не проканывает, потому заменил на допустимое
Код: Выделить всё
function TOOWriterCell.GetDataType:TOpenDT;
begin
  Result:=FCellObj.getType;
end;

Код: Выделить всё
  protected
    property SheetObj:variant read FSheetObj write FSheetObj;
...
function TOOCalcSheet.GetUsedArea: TOpenRangeAddress;
var
  v:variant;
begin
  v:=SheetObj.CreateCursor;
  v.GotoStartOfUsedArea(false);
  Result.Sheet:=v.RangeAddress.Sheet;
  Result.StartColumn:=v.RangeAddress.StartColumn;
  Result.StartRow:=v.RangeAddress.StartRow;
  v.GotoEndOfUsedArea(false);
  Result.EndColumn:=v.RangeAddress.EndColumn;
  Result.EndRow:=v.RangeAddress.EndRow;
  v:=Unassigned;
end;


Или вы о другом?
Для меня эти сом, ole и пр. не моя атмосфера.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: OleFunction

Сообщение Виталий » 10.04.2015 07:52:56

Да, я о другом. В Builder C++ из пакетов RAD Studio уже оч. давно есть возможность вызвать метод или свойство по его имени не прописав его жестко в программе. В некую функцию передается строка, по этой строке вызывается свойство интерфейса. Вот я тоже хочу такое но в Лазарусе.
Я то понимаю что Билдер и Лазарус и рядом не валяются, но все же.
Виталий
новенький
 
Сообщения: 40
Зарегистрирован: 05.01.2013 22:33:11

Re: OleFunction

Сообщение *Rik* » 10.04.2015 09:46:03

Виталий писал(а):Да, я о другом. В Builder C++ из пакетов RAD Studio уже оч. давно есть возможность вызвать метод или свойство по его имени не прописав его жестко в программе. В некую функцию передается строка, по этой строке вызывается свойство интерфейса. Вот я тоже хочу такое но в Лазарусе.
Я то понимаю что Билдер и Лазарус и рядом не валяются, но все же.

Можно сделать самому, если есть желание, объем не сильно большой. Вам нужно только правильно вызывать IDispatch.Invoke. Если есть желание поразбираться, могу скинуть кусок кода реализующий вызовы IDispatch.Invoke из своих наработок.
Может очень помочь книга, авторы Тейксейра, С. Пачеко К. "Borland Delphi. Руководство разработчика". У меня она печатная в 2х томах для Delphi 5. Там очень хорошо описано как работает и как использовать механизм работы с IDispatch.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: OleFunction

Сообщение Виталий » 11.04.2015 14:08:03

Спасибо, я как раз разбиваюсь с IDispatch.
вроде понял в какую сторону двигаться.
Виталий
новенький
 
Сообщения: 40
Зарегистрирован: 05.01.2013 22:33:11


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217

Рейтинг@Mail.ru
cron