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

работа с ActiveX

Добавлено: 21 дек 2004, 10:20
eremkin
Здрасте всем!

Написал пробный интерфейс для работы со штрих-кодом Formula 732, в котором всего 1 кнопка, при нажатии на которую должен открыться порт для передачи данных с устройства.

Вот текст
interface iProba;
show at (,,80,20);

var
pOCX : LongInt;

view as select * from X$RESOURCES;//любая таблица чтобы можно было компилить

screen SPrpoba;
buttons
cmOpenFormula;

<<
<. Открыть .>
>>
end; // в этом окне будет показан HTML файл

HandleEvent
cmOpenFormula : {
SetTitle('Файл: ');
_try {
pOCX := OleCreate ('FORMULA.FormulaCtrl.1');
}
_except
on ExOle: {
Message('Не зарегистрирован объект ActiveX!'+Chr(13)+'Для корректной работы запустите reg.bat из каталога EXE\OCX.',Error);
Abort;
}
OleSetOptions (pOCX, 1);
//OleEmbed (pOCX, s1); // связываем
OleCall1 (pOCX, ocProc, 'open');
}
end;
end.

При компиляции возникает ошибка на с троке с OleCall1: Не все параметры были указаны.

У функции open нет параметров, в чем может быть проблема.

PS: может кто-нибудь уже писал подобные обработчики для переноса данных с устройства штрих-кода в файл.

Re: работа с ActiveX

Добавлено: 21 дек 2004, 16:50
Goblin
Проблема с OleCall1 - ей 1 параметр надо передавать ...
Для функций без параметров есть OleCall0

Re: работа с ActiveX

Добавлено: 21 дек 2004, 17:07
eremkin
Спасибо, работает.
А как написать обработку события в Vip ActivX объекта.

Re: работа с ActiveX

Добавлено: 22 дек 2004, 09:42
Goblin
Создается объект и его событию Changed дается обработчик OnChanged

Function OnChanged (var aX : Integer);
{
X:= X+1;
}

Procedure MakeMyObj1;
Var L : LongInt;
{
L:= OleCreate ('MyDataObject1');
if then L = 0 then Exit;
OleBindEvent (L, 'OnChanged', 'Changed');
}