Обсуждение:Длм-ка lgxe.d32 - работа с терминальными ActiveX-объектами с поддержкой событий (+)
0 (0)
Обсуждение:Длм-ка lgxe.d32 - работа с терминальными ActiveX-объектами с поддержкой событий (+) ( Обсуждение примера 18.11.2003 04:43 )
0(0)23.03.2012 В серверной части убрана передача флага flags=DISPATCH_PROPERTYPUTREF.
Глючит при присвоении свойству-объекту ActiveX нового объекта ActiveX,
т.к. передается pdisp с типом VT_DISPATCH, а wFlags==DISPATCH_PROPERTYPUTREF.
Для правильной работы требуется одно из сочетаний:
VT_DISPATCH + DISPATCH_PROPERTYPUT
VT_DISPATCHREF + DISPATCH_PROPERTYPUTREF
Выбрал 1-й вариант.
16.04.2009 Добавлена поддержка типа V_NUMERIC. Делается автоконвертация в CURRENCY и обратно.
20.01.2009 В серверной части добавлена регистрация всех созданных объектов в спец.список, а
при завершении работы макроса - удаление всех оставшихся в списке объектов (из-за
взаимных ссылок могли оставаться неудаленные объекты).
23.05.2007 Введена поддержка наследования TlgActiveX. Добавлены функции lgxBeforeSet,
lgxBeforeSetObject, lgxBeforeGet, lgxBeforeGetObject для перехвата событий
BeforeSet и BeforeGet. Добавлена поддрежка передачи TArray в качестве аргу-
ментов (необходимо для Open Office).
11.04.2007 При невозможности создать TlgActiveX-объект теперь не возвращается объект,
а возвращается то, что предусмотрено функцией lgxeError или null. Это было крити-
чно при использовании одновременно с vclrsl.d32. Как вариант - проверка наличия
MS Office или Open Office.
21.08.2006 Предусмотрена очистка массива ListText при инициализации, деинициализации серверного модуля.
16.08.2006 Добавлена поддержка передачи TArray по значению в качестве аргумента метода.
(Используется при работе со StarOffice).
15.08.2006 Изменен алгоритм передачи строковых аргументов, аргументов по ссылке и
возвращаемых значений. Снято ограничение на размер строки.
22.02.2000 Луппов Григорий Борисович, ОАО КБ "Хлынов", г.Киров
e-mail: greg@ezmail.ru
Универсальный клиент ActiveX
исключительно для работы в трехзвенке
(вариант с обработкой событий)
Состав: модуль lgxe.d32 (поместить на терминальный компьютер к программе
term.exe)
модуль lgxse.d32(поместить на сервер приложений в каталог MAC)
Назначение: программа является приблизительным аналогом rslx.d32 Сергея
Кубрина. Но rslx.d32 при работе на удаленной машине требует
поддержки протокола DCOM, который не работает, если терми-
нальный компьютер стоит под Windows 95(98). Данная длм-ка
призвана устранить этот недостаток и позволяет работать с
объектами ActiveX, которые создаются и выполняются на тер-
минальном компьютере.
Особенности:в данной длм-ке осуществлено разделение объектов TlgActiveX,
которые создаются на сервере приложений, и их свойств и мето-
дов, которые вызываются/выполняются на терминале с передачей
входящих и выходящих параметров между терминалом и сервером.
Посмотреть пример
>> ОтветитьДобавлена поддержка TArray (+) ( григ 16.08.2006 11:06 )
0(0)Вот пример:
import rslx, lgxse1; array args; ar=TArray; DstFile="private:factory/swriter"; word=TlgActiveX("com.sun.star.ServiceManager",false); //вернуть структуру имя свойства+значение macro wrd_MakePropertyValue(word,PropName,PropValue) if(valtype(PropValue)!=V_STRING) return false; end; ob=word.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); ob.Name=PropName; ob.Value=PropValue; return ob; end; ar[0]=wrd_MakePropertyValue(word,"FilterName","rtf"); //MsgBox(ar[0]); //DstFile="file:///c:/6/AnketaU.rtf"; DstFile="file:///c:/6/AnketaU.rtf"; ob = word.CreateInstance("com.sun.star.frame.Desktop"); odoc = ob.LoadComponentFromURL(DstFile,"_blank",0,ar); ooText=oDoc.GetText(); ooText.SetString("Hello World!"); ob=ar[0]; ob.Value="HTML (StarWriter)"; odoc.StoreToURL("file:///c:/6/1.txt",ar); end;
>> ОтветитьПример не работает. ( pam 12.03.2008 18:30 )
0(0)А не работает пример на новой сборке d32
>> ОтветитьНомер сборки? ( oks2001 12.03.2008 21:41 )
0(0)Not specified
>> Ответитькоторая выложена в примерах. ( pam 13.03.2008 09:23 )
0(0)Not specified
>> Ответить
Добавлена поддержка наследования (+) ( григ 23.05.2007 15:51 )
0(0)23.05.2007 Введена поддержка наследования TlgActiveX. Добавлены функции lgxBeforeSet,
lgxBeforeSetObject, lgxBeforeGet, lgxBeforeGetObject для перехвата событий
BeforeSet и BeforeGet.
>> ОтветитьРаботает только через TCP/IP ( Crin 14.11.2007 14:29 )
0(0)Нет. Я так из положения вышел (+) ( григ 14.11.2007 15:21 )
0(0)Сделал term1.ini c PIPE и запускаю с ним терминал, а в term.ini поставил TCP/IP
>> ОтветитьЕсть еще вариант ( Crin 14.11.2007 17:36 )
0(0)Есть еще вариант, чтобы не менять всем ярлыки для запуска.
В term.ini проставить PROTOCOL=1, сделать копию ini-файла
например term.in2, там проставить PROTOCOL=2.
В lgxe.d32 заменить term.ini на term.in2 каким нибудь редактором бинарных файлов.
Спасибо!
>> Ответить
Запутался lg lgx lgxe они все нужны или взаимо заменяемы. ( deusex 04.07.2013 09:59 )
0(0)1. я так понимаю lgxe это продолжение lgx т.е lgx нужно везде заменить на lgxe?
2. не совсем понятно нужен ли lg или все его функции есть в lgxe?
3. Должена остаться только одна dlm lgxe? остальное можно вырезать?
>> Ответитьа исходники доработки где ?))) ( Neverwinter 10.07.2013 16:04 )
0(0)Not specified
>> Ответитьа как сделать так чтоб можно было пользоваться Excel - если отчет долго формируется? ( KaMPiLeR 30.05.2016 11:09 )
0(0)а то начинает формироваться отчет в открытый иксель ((
>> ОтветитьВсе просто :) (+) ( григ 30.05.2016 12:17 )
0(0)1. ob=TlgActiveX("Excel.Application",false); - новый экземпляр Excel
2. Юзать ob_temp - это заглушка для случаев, когда в TC Enter-ом жмешь на *.xls
3. Не надо делать Visible=true перед выводом
4. Поставить на OnError визуализацию Excel или выход из него
if(IsStandAlone()) ob=ActiveX("Excel.Application",null,false); ob_temp=ActiveX("Excel.Application",null,false); else ob=TlgActiveX("Excel.Application",false); ob_temp=TlgActiveX("Excel.Application",false); end; ob.Workbooks.Add; sheet1=ob.Sheets(CurSheet); ob.Calculation=xlManual; ob.ScreenUpdating=false; ... if(not IsStandAlone()) lgSetAnswer(0); TestEvent(1); end; ob.Calculation=xlAutomatic; ob.ScreenUpdating=true; ob.Visible=true; ... OnError(err) MsgBox("Ошибка:"+err.Message+"|Модуль:"+err.Module+"|Строка:"+string(err.Line)); //на случай сбоя визуализируем Excel if(valtype(ob)==V_GENOBJ) ob.Calculation=xlAutomatic; ob.ScreenUpdating=true; ob.Visible=true; //или ob.Quit; end; end;
>> Ответитьправильно я понимаю что нужно где то указать что объект икселя формировать на стороне сервера? (+) ( KaMPiLeR 30.05.2016 13:36 )
0(0)у меня на сервере приложений пользователи не работают - иксель запустить только я могу.
второй параметр у TlgActiveX - это что?
>> ОтветитьTlgActiveX - это только на стороне термина (+) ( григ 30.05.2016 14:15 )
0(0)На СП юзай rslx.d32 или rsax.d32, но лучше этого не делать.
Второй параметр = true - использовать активный экземпляр класса, если он есть, = false - создавать новый.
>> Ответитьхм, а что это значит? ( KaMPiLeR 30.05.2016 14:24 )
0(0)TlgActiveX - это только на стороне термина
у меня обычная трехзвенка.
На СП юзай rslx.d32 или rsax.d32, но лучше этого не делать.
странный совет ))
проблема проста - раньше когда отчет долго формировался - запрещал открывать иксель и народ особо не возбухал.
сейчас переосмылил и хочется чтоб можно было работать в икселе ))
>> Ответитьхм, а что это значит? ( KaMPiLeR 30.05.2016 14:24 )
0(0)TlgActiveX - это только на стороне термина
у меня обычная трехзвенка.
На СП юзай rslx.d32 или rsax.d32, но лучше этого не делать.
странный совет ))
проблема проста - раньше когда отчет долго формировался - запрещал открывать иксель и народ особо не возбухал.
сейчас переосмылил и хочется чтоб можно было работать в икселе ))
>> ОтветитьTlgActiveX создает объекты на(+) ( григ 30.05.2016 16:11 )
0(0)терминальном компьютере, а не на СП. Excel у тебя на терминале будет работать. Не знаю, как тут еще пояснить. В 3-х звенке можно ActiveX-объекты создавать на терминале, а можно - на СП.
Совет не странный, а нормальный, т.к. бывало, что некоторые программеры в 3-х звенке запускают Excel на СП, получают xls-файл, копируют на терминал или сетевой диск и открывают Excel-ом на терминале. При отладке может быть куча повисших Excel-процессов на СП, что не гуд. Да и тормозить будет всех.
Ну а насчет "переосмыслил" - так я ведь тебе уже все нарисовал - смотри выше. Вместо "..." вставь свой вывод и пользуйся.
>> Ответить