Страница 1 из 1

Такса и OLE

Добавлено: Пн фев 19, 2007 19:54
Денис_2
Здравствуйте!
На формуме поднималась тема по взаимодействию программ. В частности с ключем -Z. В теме упоминалось о том, что запросы также можно передать через OLE, не могли бы вы прояснить как это сделать ?
WINAPI не так удобен.......

Добавлено: Вс мар 18, 2007 13:30
Денис_2
ОТветили бы хоть для вежливости...... :cry:

Re: Такса и OLE

Добавлено: Пн мар 19, 2007 10:33
alta_olg
Денис_2 писал(а):Здравствуйте!
На формуме поднималась тема по взаимодействию программ. В частности с ключем -Z. В теме упоминалось о том, что запросы также можно передать через OLE, не могли бы вы прояснить как это сделать ?
WINAPI не так удобен.......
Загрузки /выгрузки данных ни по OLE ни по WINAPI на сегодняшний день нет.

Добавлено: Вт мар 20, 2007 14:56
Nick
Опишите подробнее свою задачу - вам надо передать свою заготовку в ГТД, или получить какие-то данные из ГТД?
Для обоих случаев есть более-менее стандартные решения, если что-то надо доработать - как правило мы это без проблем делаем.

Что касается "высоких" технологий типа OLE- и COM-объектов, то их в свое время попробовали и убедились что все начинает работать в разы медленнее, чем при простой передаче данных через файл. А файл может быть разный: TXT, DBF, XML, DOC, XLS, RTF, HTML...

Добавлено: Ср мар 21, 2007 09:13
Денис_2
Не в ГТД. Передать данные(код товара, страну и т.п.) в таксу и получить справку по товару из Таксы ( в виде html). Насколько я понял, ГТД так и получает.....

Добавлено: Ср мар 21, 2007 12:30
Nick
А... Я не разглядел, что про Таксу.
Там да, там старинный самопальный механизм на WinAPI :

Код: Выделить всё

1) в начале регистрируется собственный формат Clipboard-а
  CF_tax:=RegisterClipboardFormat('tax');
2) с этим форматом кладется строчка с параметрами
    P:=Format('SPRAV:%s;%s%;%d;%s;ИМ;0', TNVED, HtmReportFile, Application.MainForm.Handle, CountryCode);
    SetClipboardData(CF_tax, P);
3) ищем окно Таксы, если есть - кидаем ему message, нет - запускаем
  H :=findwindow('TfrmTax',nil);
  If H<>0 then //Поднимаем Таксу
    PostMessage(H,5557,0,0)
  else //Запускаем Таксу
    WinExec(GetTaxName,SW_SHOWMINNOACTIVE);
4) когда такса отработает - она вернет окну с указанным Handle WM_HtmlReport=5558 - можно показывать файл HtmReportFile
procedure TfrmMain.WMHtmlReport(var Msg: TMessage);
begin  
  ShowHTML(HtmReportFile, true) 
end;
Если интересно - готов поделится более подробными исходниками, пишите altan<a>aha.ru
Можно также обсудить приведение этого механизма к более удобному для вас виду - но уже за отдельную денюжку ;)