[7.3] разъясните "на пальцах" как подключать COM/OCX
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
[7.3] разъясните "на пальцах" как подключать COM/OCX
Уважаемые гуру! Наконец-то появился повод в очередной раз взяться за изучение любимого когда-то Клариона, но есть одна проблема: программа должна использовать внешний компонент (фирменную библиотечку для работы с одной железякой). Однако всё использование -- просто получение данных "запрос-ответ", без особых выкрутасов, а всё остальное в проге -- классическое ДБ-приложение.
Мануал по компоненту скромно говорит (на "китайском английском"): run regsvr32 Zkemkeeper.dll, the prompt will appear to indicate that register is successful, import this control to development tool. (Please refer to actual tools application) ability to use it through simply drag and drop.
Вот я сгенерил "заготовку" App, оно накидало деревце из Майн и процедур для примари файлов... А дальше?
Буду очень благодарен за объяснение "на пальцах" -- как в 7.3 сделать это "import this control to development tool" как можно "стандартнее" и ближе к Кларионовской идеологии, чтобы потом уже спокойно заниматься БД и интерфейсом и не терять возможность юзать Апп-ген и пр. вкусности.
Описания функций и примеры на VB выглядят примерно так:
[Function]
GetStrCardNumber(BSTR* ACardNumber)
[Purpose]
Return the card number with the string style.
[Parameter]
ACardNumber: Card number.
[Return value]
Return True for success, otherwise return False.
[Example]
Dim MachineNumber As Long
Dim UserNo As Long
Dim Privilege As Long
Dim UserName As String
Dim Password As String
Dim CardNo As String
Dim Enabled As Boolean
MachineNumber = 1;
While CZKEM1. GetAllUserInfo(MachineNumber, UserNo, UserName, Password, Privilege, Enabled)
...
CZKEM1.GetStrCardNumber(CardNo)
...
Wend
Ну и код в демо-примерах не сложнее:
Public Class Device
Public axCZKEM1 As New zkemkeeper.CZKEM
Private iMachineNumber As Integer
...
AxCZKEM1.RegEvent(iMachineNumber, 65535)
...
AxCZKEM1.GetLastError(idwErrorCode)
Мануал по компоненту скромно говорит (на "китайском английском"): run regsvr32 Zkemkeeper.dll, the prompt will appear to indicate that register is successful, import this control to development tool. (Please refer to actual tools application) ability to use it through simply drag and drop.
Вот я сгенерил "заготовку" App, оно накидало деревце из Майн и процедур для примари файлов... А дальше?
Буду очень благодарен за объяснение "на пальцах" -- как в 7.3 сделать это "import this control to development tool" как можно "стандартнее" и ближе к Кларионовской идеологии, чтобы потом уже спокойно заниматься БД и интерфейсом и не терять возможность юзать Апп-ген и пр. вкусности.
Описания функций и примеры на VB выглядят примерно так:
[Function]
GetStrCardNumber(BSTR* ACardNumber)
[Purpose]
Return the card number with the string style.
[Parameter]
ACardNumber: Card number.
[Return value]
Return True for success, otherwise return False.
[Example]
Dim MachineNumber As Long
Dim UserNo As Long
Dim Privilege As Long
Dim UserName As String
Dim Password As String
Dim CardNo As String
Dim Enabled As Boolean
MachineNumber = 1;
While CZKEM1. GetAllUserInfo(MachineNumber, UserNo, UserName, Password, Privilege, Enabled)
...
CZKEM1.GetStrCardNumber(CardNo)
...
Wend
Ну и код в демо-примерах не сложнее:
Public Class Device
Public axCZKEM1 As New zkemkeeper.CZKEM
Private iMachineNumber As Integer
...
AxCZKEM1.RegEvent(iMachineNumber, 65535)
...
AxCZKEM1.GetLastError(idwErrorCode)
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
[7.3] разъясните "на пальцах" как подключать COM/OCX
Привет !
Что-то тема за здравие, а текст за упокой ...
Вот реальный пример использования сторонней OCX для записи / чтения файла в / из КПК, причем без регистрации компоненты в реестре.
Что-то тема за здравие, а текст за упокой ...
Вот реальный пример использования сторонней OCX для записи / чтения файла в / из КПК, причем без регистрации компоненты в реестре.
Код: Выделить всё
If Exists(Clip(Left(Loc:SoftPath)) & 'APPlusX.ocx')
UnlockThread
Call(Clip(Left(Loc:SoftPath)) & 'APPlusX.ocx','DllUnRegisterServer') ! перестраховка
Call(Clip(Left(Loc:SoftPath)) & 'APPlusX.ocx','DllRegisterServer')
LockThread
Clear(Loc:RetValue)
Execute Loc:VKPK
Loc:RetValue = SendFileKPK(Clip(Left(Loc:FKPK)),'\My Documents\Personal\from4x4.zip')
Loc:RetValue = ReadFileKPK('\My Documents\Personal\to1c.zip',Clip(Left(Loc:FKPK)))
Loc:RetValue = SendFileKPK(Clip(Left(Loc:FKPK)),'\My Documents\Personal\tovar.txt')
end
UnlockThread
Call(Clip(Left(Loc:SoftPath)) & 'APPlusX.ocx','DllUnRegisterServer')
LockThread
else
Message(' В папке программы нет OCX компоненты !' ,'У нас проблема ...',Icon:Exclamation,Button:Cancel,Button:Cancel)
Display
end
Make Clarion Great Again ! 
Re: [7.3] разъясните "на пальцах" как подключать COM/OCX
Спасибо, Игорь,
В примере я не понял во что:
Почему именно Execute Loc:VKPK, вроде как "Loc:VKPK" это просто "A numeric expression or a variable that contains a numeric integer"... А что тогда есть VKPK? Имя созданного объекта с новым инстансом контрола? Но как и где он создан?
Вообще чистого кода я уже насмотрелся, пока копал семплы, и суть моего вопроса была, к моему стыду, куда более ламерской.
Последнее плотная работа с К у меня было ещё с ДОСовскими 2 и 3. Однако ещё тогда мне понравилась одна из главных изюминок: возможность сгенерить всю апп с помощью шаблонов, потом перегенерить какую-то изменённую часть, а потом всего лишь вставить в правильных местах по нескольку строчек кода -- и получить готовую и уже полностью "заточенную" под задачу прогу.
Так вот, как мне "идеологически верно" делать это на 7.3? А то, честно говоря, тут в 7 после "старичков" аж глаза разбегаются
Вот у меня есть в системе контрол PID:zkemkeeper.ZKEM.1
Теперь вроде как я должен создать в проге его объект... А как именно? В том же VB всё до жути примитивно: бросил на окно контрол, задал вызываемый PID и всё. А в К? Просто в дизайнере окна Main вставить контрол? Или где-то в эмбедах вписать "OLE,AT..." и потом "?OcxObject{PROP:Create} = 'zkemkeeper.ZKEM.1'"? (последнее тоже -- где?)
В примере я не понял во что:
Почему именно Execute Loc:VKPK, вроде как "Loc:VKPK" это просто "A numeric expression or a variable that contains a numeric integer"... А что тогда есть VKPK? Имя созданного объекта с новым инстансом контрола? Но как и где он создан?
Вообще чистого кода я уже насмотрелся, пока копал семплы, и суть моего вопроса была, к моему стыду, куда более ламерской.
Последнее плотная работа с К у меня было ещё с ДОСовскими 2 и 3. Однако ещё тогда мне понравилась одна из главных изюминок: возможность сгенерить всю апп с помощью шаблонов, потом перегенерить какую-то изменённую часть, а потом всего лишь вставить в правильных местах по нескольку строчек кода -- и получить готовую и уже полностью "заточенную" под задачу прогу.
Так вот, как мне "идеологически верно" делать это на 7.3? А то, честно говоря, тут в 7 после "старичков" аж глаза разбегаются

Вот у меня есть в системе контрол PID:zkemkeeper.ZKEM.1
Теперь вроде как я должен создать в проге его объект... А как именно? В том же VB всё до жути примитивно: бросил на окно контрол, задал вызываемый PID и всё. А в К? Просто в дизайнере окна Main вставить контрол? Или где-то в эмбедах вписать "OLE,AT..." и потом "?OcxObject{PROP:Create} = 'zkemkeeper.ZKEM.1'"? (последнее тоже -- где?)
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: [7.3] разъясните "на пальцах" как подключать COM/OCX
Зачем в Main?Просто в дизайнере окна Main вставить контрол?
1. Создай отдельное окно (простое Windows).
2. Помести на него контрол OLE/OCX и выбери в свойствах Object из списка нужный тебе OCX.
В сгенерированном коде у тебя будет что-то подобное
Код: Выделить всё
window WINDOW('Тестирование OCX'),AT(,,380,210),FONT('MS Sans Serif',8,,),IMM,ICON('Graphup.ico'),STATUS(100,100,100,-1),TIMER(100),SYSTEM,GRAY,MAX,AUTO
OLE,AT(5,2,370,181),USE(?OLE),CREATE('iPlotLibrary.iPlotX'),COMPATIBILITY(020H)
END
BUTTON('About'),AT(6,191,45,14),USE(?Button3),HIDE
BUTTON('&OK'),AT(265,190,45,14),USE(?OkButton),STD(STD:Close),DEFAULT
BUTTON('Cancel'),AT(317,190,45,14),USE(?CancelButton)
BUTTON('Clear'),AT(115,191,45,14),USE(?ClearBtn)
BUTTON('Save prop'),AT(166,191,45,14),USE(?SaveBtn)
BUTTON('Show'),AT(63,191,45,14),USE(?ShowBtn),HIDE
END
3. На кнопку инициализации (напр, Clear) вешаешь соотв. код. Например:
Код: Выделить всё
InitPlot ROUTINE
!Glo:IdDataView=?Ole{'AddDataView()'}
?Ole{'TitleText'} = Clip(Glo:Title)
?Ole{'Channel(0).TitleText'}=Clip(Glo:ChannelTitle1)
?Ole{'Channel(0).RingBufferSize'}=Glo:RingBufferSize
?Ole{'Channel(0).XAxisTrackingEnabled'} = True
?Ole{'Channel(0).TraceLineWidth'} = 2
Glo:IdChannel=?Ole{'AddChannel'}
?Ole{'Channel(1).TitleText'}=CLIP(Glo:ChannelTitle2)
?Ole{'Channel(1).RingBufferSize'}=Glo:RingBufferSize
!------------
?Ole{'XAxis(0).Name'}= 't'
?Ole{'YAxis(0).Name'}= 'T'
?Ole{'XAxis(0).Title'} ='t(sec)'
?Ole{'YAxis(0).Title'} ='T(C)'
?Ole{'YAxis(0).Enabled'} =True
?Ole{'Legend(0).Enabled'}=True
Glo:IdLimit1=?Ole{'AddLimit'}
?Ole{'Limit(' & Glo:IdLimit1 & ').Style'}=iplsBandY
?Ole{'Limit(' & Glo:IdLimit1 & ').Color'}=Color:Yellow
?Ole{'Limit(' & Glo:IdLimit1 & ').LineStyle'}=psSolid
?Ole{'Limit(' & Glo:IdLimit1 & ').FillStyle'}=bsClear
?Ole{'Limit(' & Glo:IdLimit1 & ').Line1Position'}=75
?Ole{'Limit(' & Glo:IdLimit1 & ').Line2Position'}=95
?Ole{'Limit(' & Glo:IdLimit2 & ').YAxisName'}='T'
Glo:IdAxis=?Ole{'AddYAxis'}
!Message(Glo:IdAxis,'ID Axis')
! ?Ole{'XAxis(1).Name'}= 't'
?Ole{'YAxis(1).Name'}= 'P'
?Ole{'XAxis(1).Title'} ='t(sec)'
?Ole{'YAxis(1).Title'} ='P(Mpa)'
?Ole{'YAxis(1).Enabled'} =True
?Ole{'YAxis(1).Visible'} =True
!Glo:IdAxis=?Ole{'AddYAxis'}
!?Ole{'YAxis(2).Name'}= 'Grid'
!?Ole{'YAxis(2).Visible'} =True
Glo:IdLimit2=?Ole{'AddLimit'}
?Ole{'Limit(' & Glo:IdLimit2 & ').Style'}=iplsBandY
?Ole{'Limit(' & Glo:IdLimit2 & ').Color'}=Color:White
?Ole{'Limit(' & Glo:IdLimit2 & ').LineStyle'}=psSolid
?Ole{'Limit(' & Glo:IdLimit2 & ').FillStyle'}=bsClear
?Ole{'Limit(' & Glo:IdLimit2 & ').Line1Position'}=45
?Ole{'Limit(' & Glo:IdLimit2 & ').Line2Position'}=85
?Ole{'Limit(' & Glo:IdLimit2 & ').YAxisName'}='P'
!-------------
! ?Ole{'Legend(0).ColumnTitlesVisible'}=True
?OLE{'DisableLayoutManager'}
!------------
!?Ole{'DataViewZVert'}=2
?Ole{'YAxis(0).ZOrder'}=0
?Ole{'YAxis(1).ZOrder'}=0
!?Ole{'YAxis(2).ZOrder'}=1
?Ole{'YAxis(0).StartPercent'}=0
?Ole{'YAxis(0).StopPercent'}=50
?Ole{'YAxis(0).StackingEndsMargin'}=0.25
?Ole{'YAxis(1).StartPercent'}=50
?Ole{'YAxis(1).StopPercent'}=100
?Ole{'YAxis(1).StackingEndsMargin'}=0.25
!---- Link axis and channels
?OLE{'Channel(1).YAxisName'}='P'
?OLE{'DataView(0).GridYAxisName'}='T'
?OLE{'EnableLayoutManager'}
4. На кнопку (например,Show) повесь нужный тебе код. Например, для вышеуказанного OCX это будет
Код: Выделить всё
ShowPlotTimer ROUTINE
IF Glo:i < 100 THEN
glo:i=glo:i+1
Glo:X[Glo:i]=Glo:i
Glo:Y[Glo:i]=RANDOM(Glo:Low,Glo:High)
?Ole{'Channel(0).AddXY('& Glo:X[Glo:i] &',' & Glo:Y[Glo:i] & ')<39>'}
?Ole{'Channel(1).AddXY('& Glo:X[Glo:i] &',' & Glo:Y[Glo:i]-Random(1,10) & ')<39>'}
ELSE
?Ole{'Channel(0).Clear'}
?Ole{'Channel(1).Clear'}
Glo:i=0
END
З.Ы. Заголовок темы правильнее было бы назвать " ... как подключать OLE/OCX". Подключение COM - отдельная "песня".
WBR, morkovin
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: [7.3] разъясните "на пальцах" как подключать COM/OCX
В С8 немного подругому: Properties ->ControlType ->ServerNameПомести на него контрол OLE/OCX и выбери в свойствах Object из списка нужный тебе OCX.
WBR, morkovin
[7.3] разъясните "на пальцах" как подключать COM/OCX
Добрый день всем.
Поднимаю тему.
Есть сторонняя ocx ( CasScale.ocx) в ней есть ряд процедур.
Например
Long ConnectionEx3 (string Scale IP, long Scale Port, integer ScaleID, long Scale Model,
string ScaleVersion, long DataType)
Я посмотрел ответ ув. Игорь Столяров где он указал способ подключения.
!***************Цитата 2ой пост в данной теме******************
Call(Clip(Left(Loc:SoftPath)) & CasScale.ocx','DllRegisterServer')
Execute Loc:VKPK
Loc:RetValue = ConnectionEx3(......)
!***********************************************************************
Не подскажите что такое Execute Loc:VKPK?
Как подключить данную ocx компоненту?
Спасибо.
Прошу прощения за предыдущий пост. Не получается его удалить.
Поднимаю тему.
Есть сторонняя ocx ( CasScale.ocx) в ней есть ряд процедур.
Например
Long ConnectionEx3 (string Scale IP, long Scale Port, integer ScaleID, long Scale Model,
string ScaleVersion, long DataType)
Я посмотрел ответ ув. Игорь Столяров где он указал способ подключения.
!***************Цитата 2ой пост в данной теме******************
Call(Clip(Left(Loc:SoftPath)) & CasScale.ocx','DllRegisterServer')
Execute Loc:VKPK
Loc:RetValue = ConnectionEx3(......)
!***********************************************************************
Не подскажите что такое Execute Loc:VKPK?
Как подключить данную ocx компоненту?
Спасибо.
Прошу прощения за предыдущий пост. Не получается его удалить.
Александр
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
[7.3] разъясните "на пальцах" как подключать COM/OCX
Просто выбросьте это из примера (это переменная "вид КПК (ископаемый смартфон)" которая определяла запуск передачи данных с использованием OCX компоненты).

Make Clarion Great Again ! 
[7.3] разъясните "на пальцах" как подключать COM/OCX
Спасибо за быстрый ответ.
Что я сделал. В папке на диске d:\1 есть эта компонента.
Вот код
Call('d:\1\CasScale.ocx','DllRegisterServer')
loc:rez = ConnectionEx3('10.0.0.65','20304',-1,5200,'2.94.4,1.5,0',217)
При компиляции Clarion 8 ругается на Unknowun Function label.
Пробывал и regsvr32 d:\1\CasScale.ocx. Тоже не работает.
Может ее еще надо гденибудь добавить в коде?
Уважаемый Игорь помогите еще раз.
Спасибо.
Что я сделал. В папке на диске d:\1 есть эта компонента.
Вот код
Call('d:\1\CasScale.ocx','DllRegisterServer')
loc:rez = ConnectionEx3('10.0.0.65','20304',-1,5200,'2.94.4,1.5,0',217)
При компиляции Clarion 8 ругается на Unknowun Function label.
Пробывал и regsvr32 d:\1\CasScale.ocx. Тоже не работает.
Может ее еще надо гденибудь добавить в коде?
Уважаемый Игорь помогите еще раз.
Спасибо.
Александр
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
[7.3] разъясните "на пальцах" как подключать COM/OCX
Не ну естественно ! ConnectionEx3 - не описана в MAP и не известна компилятору.
Нужно инициализировать ОСХ и вызывать метод, через обращение к нему.
Что-то вроде ?MyOCX(ConnectionEx3(...)). Точно также как работаем с методами при передачи данных, через OLE в MS Excel.
Но для каждого OCX - там свои фишки. В примерах Clarion (по крайне мере 6.3) был Source c примерами работы и просмотром
доступных для вызова методов OCX. А вообще - это путь муторный. Если есть возможность не работать с OCX из Clarion - не работай !

Make Clarion Great Again ! 
[7.3] разъясните "на пальцах" как подключать COM/OCX
Добрый день всем.
В общем я с компонентой ocx поковырялся и она у меня заработала.
Что я сделал. Зарегистрировал ее.
Мне всегда в loc:rez приходит значение 1, Не важно есть ли устройство в вести или нет.
Получается что загрузить данные в устройство я могу, но если устройство не доступно, то мне об этом ничего не известно, что не позволяется мне запустить это в работу.
Производитель мне прислал пример на VisalBasic 6 и на C#.
Также указал как нужно работать с компонентой
(1) Try connection using axCasScale1.ConnectionEx3
(2) Receive the state of connection through axCasScale1_StateEvent
(3) Send PLU Data using axCasScale1.SendDataString
(4) Receive the result of sending through axCasScale1_RecvEventString
В мануале есть описанные процедуры StateEvent и RecvEventString
void RecvEventString (string ScaleIP, integer ScaleID, long Result, long TransType,long DataType, long ScaleModel, string Data)
void StateEvent(string ScaleIP, integer ScaleID, long State, string Data)
Я смотрю пример на VB6 так там код такой
1. Подключение
2. Получение статуса соединения. В этом и загвоздка.
Пробовал
Т.е. Visual Basic 6 значением nRtn обрабатывает ошибку соединения 0 - есть 1 нет .
В момент случае всегда возвращает 1
loc:rez = loc:ole{'ConnectionEx3("10.0.0.66",20304,-1,5200,"2.94.4,1.5,0",218)'}
Значение 0 возвращает только в том случае если компонента не зарегистрирована.
Я так понял что мой loc:rez возвращает ошибку контейнера OLE/OCX а глубже я не вижу.
Подскажите пожалуйста как ответ от самой компоненты OCX?
В приложенных есть пример на VB6.
Спасибо за внимание.
Извините за много букв.
В общем я с компонентой ocx поковырялся и она у меня заработала.
Что я сделал. Зарегистрировал ее.
Код: Выделить всё
DATE
loc:ole long
loc:rez long
CODE
loc:ole=create(0,CREATE:Ole)
loc:ole{Prop:Create}='CAS.LABELSCALE'
loc:ole{Prop:ReportException}=TRUE
loc:rez = loc:ole{'ConnectionEx3("10.0.0.66",20304,-1,5200,"2.94.4,1.5,0",218)'}
sleep(50)
MESSAGE(loc:rez,'connect')
loc:rez = loc:ole{'SendDataString("10.0.0.66", -1, 5200, "2.94.4,1.5,0",5,218,"")'}
sleep(50)
MESSAGE(loc:rez,'send')
Получается что загрузить данные в устройство я могу, но если устройство не доступно, то мне об этом ничего не известно, что не позволяется мне запустить это в работу.
Производитель мне прислал пример на VisalBasic 6 и на C#.
Также указал как нужно работать с компонентой
(1) Try connection using axCasScale1.ConnectionEx3
(2) Receive the state of connection through axCasScale1_StateEvent
(3) Send PLU Data using axCasScale1.SendDataString
(4) Receive the result of sending through axCasScale1_RecvEventString
В мануале есть описанные процедуры StateEvent и RecvEventString
void RecvEventString (string ScaleIP, integer ScaleID, long Result, long TransType,long DataType, long ScaleModel, string Data)
void StateEvent(string ScaleIP, integer ScaleID, long State, string Data)
Я смотрю пример на VB6 так там код такой
1. Подключение
Код: Выделить всё
Private Function ConnectScale(ByVal sIP As String, ByVal shScaleID As Integer, ByVal nModel As Integer, ByVal sVersion As String)
Dim nRtn As Long
DisconnectScale sIP, shScaleID
nRtn = CasScale.ConnectionEx3(sIP, 20304, shScaleID, nModel, sVersion, DF_DATA_PLU_V04)
ConnectScale = nRtn
End Function
!Мой код
loc:rez = loc:ole{'ConnectionEx3("10.0.0.66",20304,-1,5200,"2.94.4,1.5,0",218)'}
Пробовал
Код: Выделить всё
DATE
loc:str string
CODE
loc:str = loc:ole{'StateEvent("10.0.0.66",-1,"","")'}
В примере на VB6 есть
//********************************************************
nRtn = ConnectScale(sIP, shScaleID, nModel, sVersion)
If nRtn > 0 Then
sSendData = MakeIngredientDataForSend(m_sendInfo(shScaleID - 1).wdSendCount + 1)
nRtn = CasScale.SendDataString(sIP, shScaleID, nModel, sVersion, DF_ACTION_DOWNLOAD, DF_DATA_INGREDIENT, sSendData)
Else
sState = "Fail connection IP: " & sIP
WriteCommState (sState)
End If
//********************************************
В момент случае всегда возвращает 1
loc:rez = loc:ole{'ConnectionEx3("10.0.0.66",20304,-1,5200,"2.94.4,1.5,0",218)'}
Значение 0 возвращает только в том случае если компонента не зарегистрирована.
Я так понял что мой loc:rez возвращает ошибку контейнера OLE/OCX а глубже я не вижу.
Подскажите пожалуйста как ответ от самой компоненты OCX?
В приложенных есть пример на VB6.
Спасибо за внимание.
Извините за много букв.
- Вложения
-
- OCX_VB6.rar
- Пример работы на Visual Basic 6
- (227.43 КБ) 194 скачивания
-
- OCX_Csharp.rar
- Пример работы на C#
- (383.78 КБ) 185 скачиваний
Александр
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
[7.3] разъясните "на пальцах" как подключать COM/OCX
Правила форума
...
А так же пользуйтесь спец. тегами при вставке исходников!!!
...
А так же пользуйтесь спец. тегами при вставке исходников!!!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса