Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#16: 2007-10-09 21:31:58 ЛС | профиль | цитата
Alexbootch, понятия "в формате VBScript" и "на языке VBScript" всетаки отличаются наверно.
Alexbootch писал(а):
или как?

так
DoingActiveXMethod param1,param2,param3[/code]
карма: 27
0
Ответов: 2125
Рейтинг: 159
#17: 2007-10-09 21:38:24 ЛС | профиль | цитата
Dilma писал(а):
выстраивать по нему наборы точек

Мы уже один раз дискутировали на эту тему, но дальше дискуссии что-то не пошло.
С тех пор, как МТ-потоки прочно вошли в стандарт, можно теперь передавать параметры методов как МТ-потоки. Однако всё равно, многие ActiveX используют как параметр и/или возвращают в качестве результата другие "объекты", которые суть IDispatch. С ними всё равно надо что-то делать. А ещё есть записи (в качестве параметров/результата), но это тоже разновидность объектов. То есть я это к тому говорю, что установка нового ActiveX-элемента может сопровождаться генерацией нескольких дополнительных элементов, которые работают с другими объектами, имеющимися в библиотеке типов данного ActiveX.

[size=-2]------ Добавлено в 21:38
Alexbootch писал(а):
А по-подробнее можно про формат VBScript

Например для эксплорера (идентификатор которого Shell.Explorer) можно подать на точку doExecute следующую строку:
Navigate "http://hiasm.com/"[/code]
карма: 1

0
Ответов: 1891
Рейтинг: 110
#18: 2007-10-09 22:26:53 ЛС | профиль | цитата
Dilma, писал(а):
DoingActiveXMethod param1,param2,param3


Все понял

[size=-2]------ Добавлено в 22:26
Если нет описания методов то чем можно посмотреть методы?
карма: 0
%time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#19: 2007-10-09 23:28:19 ЛС | профиль | цитата
Alexbootch писал(а):
Если нет описания методов то чем можно посмотреть методы?

наверняка есть какие-нибудь утилиты, выполняющие эту задачу, потому что информация о методах(и их аргументах) в ActiveX элементах есть.
карма: 27
0
Ответов: 2125
Рейтинг: 159
#20: 2007-10-10 12:18:55 ЛС | профиль | цитата
В офисе есть возможность.
Запускаем Word и нажимаем Alt-F11 (вызов VB редактора) и F2 (каталог объектов). Там в контекстном меню можно подключить любую библиотеку типов (меню "Ссылки" вроде, у меня нерусский офис).
Только с именами там чёрт ногу сломит. Например WebBrowser:
- програмное имя "Shell.Explorer" (нигде не показано, я узнал через реестр)
- подключать надо "Microsoft Internet Controls"
- библиотека называется "SHDocVw" (выбрать в верхнем комбо каталога объектов)
- в левом списке объект называется "WebBrowser" (кликнуть на него) или "InternetExplorer"
- в правом списке найдём методы (зелёная иконка), свойства (иконка с рукой) и события (жёлтая иконка)

[size=-2]------ Добавлено в 12:18
Итак. Если Вы установили последнюю версию UseActiveX, то сделать простейший FlashPlayer не составит большого труда Например всего из 4 компонент: code_1971.txt
карма: 1

0
файлы: 1code_1971.txt [583B] [344]
Администрация
Ответов: 15295
Рейтинг: 1519
#21: 2007-10-10 12:47:12 ЛС | профиль | цитата
подгрузил элемент DBPix 2.0, результат на скриншоте. Сам элемент появился не в указанной области, а в углу формы с дефолтными размерами. А так впринципе все работает.

------------ Дoбавленo:

Есть сомнение в целесообразности использования ActiveScript. Лучше вызов методов сделать так же через МТ, где первым параметром будет имя самого метода. А то получается, что мы сначало формируем строку из параметров, чтобы потом её же распарсить и получить эти параметры назад...
карма: 27
0
файлы: 1dbpix.png [10.5KB] [353]
Ответов: 2125
Рейтинг: 159
#22: 2007-10-10 13:45:53 ЛС | профиль | цитата
Когда я делал компонент, МТ-технология ещё была в зачатке. Ясно, что лучше сделать вызов через МТ. Буду переделывать.

[size=-2]------ Добавлено в 13:20
Кстати, наличие на скриншоте красной надписи EVariant говорит о том, что на каком-то этапе инициализации произошла ошибка с таким вот странным описанием. Что это за ActiveX? От какой проги? У меня его нет.

[size=-2]------ Добавлено в 13:24
Нашёл в нете. Только он шароварный. Фтопку.

[size=-2]------ Добавлено в 13:28
А ActiveScript я использовал ещё и потому, что с ним можно свойства устанавливать вот так:
Prop1 = Val1: Prop2 = Val2[/code]
При желании, можно и прогу на VB с использованием контрола запускать. :)


[size=-2]------ Добавлено в 13:45 [/size]
Ага, понял, почему с DBPix глюкнуло - событий-то у него и нету. Баг, исправить надо.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#23: 2007-10-10 14:06:15 ЛС | профиль | цитата
http://www.kraysi.ru/files_view_file4149.html
нужно было перевести некий проект из MSAccess на чтение Jpeg из базы. Собственно работу где-то еще, кроме MSAccess авторы вроде и не гарантировали.

------------ Дoбавленo:

tsdima писал(а):
Нашёл в нете. Только он шароварный. Фтопку.

для нашего человека это не проблема

tsdima писал(а):
А ActiveScript я использовал ещё и потому, что с ним можно свойства устанавливать вот так

св-ва можно организовать как именной массив
карма: 27
0
Ответов: 2125
Рейтинг: 159
#24: 2007-10-10 14:12:23 ЛС | профиль | цитата
Dilma, проверь пжалста DBPix с таким вот изменением:
procedure THIUseActiveX.Init;
var pCtl: PMyOleCtl; tiEvents: ITypeInfo;
begin
try
pCtl := NewMyOleCtl(FParent, _prop_CLSID); Control := pCtl;
FSite.CreateScriptEngine(slVBScript);
FSite.ControlIUnknown := pCtl.OleObject;
tiEvents := pCtl.GetEventTypeInfo;
if tiEvents<>nil then begin
FEventHandler := TMyEventHandler.Create(Self, tiEvents);
InterfaceConnect(pCtl.OleObject, FEventHandler.IID, FEventHandler, FEventConnection);
end;
except

[size=-2]------ Добавлено в 14:12
Почему-то невидимые в runtime контролы образуют неотрисовываемую область. Видимо их размер нужно принудительно в 0,0 устанавливать...
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#25: 2007-10-10 15:09:29 ЛС | профиль | цитата
tsdima, тоже самое. Проблема в
code_7322.txt

переменная tiEvents не пустая поэтому если вручную закомментировать эти строки, то все становится нормально
карма: 27
0
файлы: 1code_7322.txt [178B] [284]
Ответов: 2125
Рейтинг: 159
#26: 2007-10-10 18:41:59 ЛС | профиль | цитата
Не поленился скачал. А вот фиг. Есть у него события. Буду разбираться.

[size=-2]------ Добавлено в 18:17
Заработало. Не спрашивай "почему?", просто исправь код. Объяснение требует танцев с бубном
function TMyEventHandler._AddRef: Integer;
var pdisp: IDispatch;
begin
pdisp := PMyOleCtl(FMe.Control).OleObject;
Result := pdisp._AddRef;
end;

function TMyEventHandler._Release: Integer;
var pdisp: IDispatch;
begin
pdisp := PMyOleCtl(FMe.Control).OleObject;
Result := pdisp._Release;
end;


[size=-2]------ Добавлено в 18:41
Оказывается, метод OleObject в дельфишной версии ActiveKOL.pas возвращает не IDispatch, а Variant! А я-то блин смотрю в исходники в каталоге FPC, сравниваю со скомпилированным кодом и думаю: причём тут Variant?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#27: 2007-10-10 18:52:28 ЛС | профиль | цитата
да в таком варианте все работает как надо.

Так же имеется пожелание: добавить св-во align.

Ну и на SVN конечно же.

------------ Дoбавленo:

А как такое нравится?
Add(UseActiveX,16335345,147,147)
{
Left=30
Top=25
Width=360
Height=230
CLSID="{0002E551-0000-0000-C000-000000000046}"
}

делаем Office с помощью HiAsm

карма: 27
0
файлы: 1office_1.png [8.6KB] [342]
Ответов: 2125
Рейтинг: 159
#28: 2007-10-10 19:18:03 ЛС | профиль | цитата
Dilma писал(а):
делаем Office с помощью HiAsm

Ага, если бы ещё оно работало на компутере, где Office не инсталлирован

[size=-2]------ Добавлено в 19:18
Dilma писал(а):
добавить св-во align

Ну, можно вообще все свойства THIWin добавить, и сплиттер тоже. Только есть подозрение, что динамическое изменение размеров OCX бесследно не пройдёт...
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#29: 2007-10-10 20:38:33 ЛС | профиль | цитата
если что-то будет не так работать как следовало, то выравнивание всегда можно отключить
карма: 27
0
Ответов: 8926
Рейтинг: 823
#30: 2007-10-10 21:03:46 ЛС | профиль | цитата
tsdima, где же взять ActiveX ?

карма: 19

0
файлы: 1activex.png [4.6KB] [337]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)