powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / OCX (activeX) в Oracle Forms??!!
14 сообщений из 14, страница 1 из 1
OCX (activeX) в Oracle Forms??!!
    #33317899
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашел на форуме и до сих пор не понял по хелпу как читать/писать свойства ActiveX. Подскажите плиз, я в Forms недавно (из Delphi):
Вставляю на канву ActiveX - компонент. В моем случае это компонент Tidestone Formula One (Для меня это самое удобное средство для Excel - отчетности, но На его месте мог быть другой). Вопрос: Как повесить на кнопку простое действие: ActiveX_Имя.Свойство := ЧегоНибудь; ???

Хелп говорит 2 способа добраться до его свойств:
1. To set and get ActiveX control properties using bind variable syntax:

Use bind variable syntax to assign or retrieve property values.
For example, :item('block_name.item_name').ocx.server_name.property,
where block_name is the name of the data block,
item_name is the name of the ActiveX control,
server_name is the name of the ActiveX server,
property is the name of the ActiveX property being accessed.
/* Setting an ActiveX control property using bind variable syntax */

:item('ActXitem').OCX.Spindial.spindialctrl.1.Needleposition:=
:item('ActXitem').OCX.Spindial.spindialctrl.1.Needleposition + 1;


2./* Getting an ActiveX control property using get accessor */

tblname varchar2;
tblname := table_pkg.TableName(:item('Oblk.Oitm').interface);

table_pkg is the name of the program unit created from the OLE Importer. TableName is the name of the property accessor. Oblk is the name of the block and Oitm is the name of the item.


В первом способе мне не ясно чего такое :item - это переменная? Объявлять? Пример?
Во втором - все тот же item и где найти этот самый млин "unit created from the OLE Importer"?
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33317924
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашел на форуме и до сих пор не понял по хелпу как читать/писать свойства ActiveX. Подскажите плиз, я в Forms недавно (из Delphi):
Вставляю на канву ActiveX - компонент. В моем случае это компонент Tidestone Formula One (Для меня это самое удобное средство для Excel - отчетности, но На его месте мог быть другой). Вопрос: Как повесить на кнопку простое действие: ActiveX_Имя.Свойство := ЧегоНибудь; ???

Хелп говорит 2 способа добраться до его свойств:
1. To set and get ActiveX control properties using bind variable syntax:

Use bind variable syntax to assign or retrieve property values.
For example, :item('block_name.item_name').ocx.server_name.property,
where block_name is the name of the data block,
item_name is the name of the ActiveX control,
server_name is the name of the ActiveX server,
property is the name of the ActiveX property being accessed.
/* Setting an ActiveX control property using bind variable syntax */

:item('ActXitem').OCX.Spindial.spindialctrl.1.Needleposition:=
:item('ActXitem').OCX.Spindial.spindialctrl.1.Needleposition + 1;


2./* Getting an ActiveX control property using get accessor */

tblname varchar2;
tblname := table_pkg.TableName(:item('Oblk.Oitm').interface);

table_pkg is the name of the program unit created from the OLE Importer. TableName is the name of the property accessor. Oblk is the name of the block and Oitm is the name of the item.


В первом способе мне не ясно чего такое :item - это переменная? Объявлять? Пример?
Во втором - все тот же item и где найти этот самый млин "unit created from the OLE Importer"?
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318065
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия Forms?
Второй способ для понимания и разбора проще. Для работы со свойствами объекта необходимо импортировать в форму интерфейсные пакеты для данного ActiveX item (меню Program\OLE Importer) Импортировать будет проще, если воспользоваться следующим алгоритмом встраивания объекта. Создаешь контейнер, в его свойствах указываешь OLE Class (MSMAPI.MAPIMessages.1, MSComctlLib.ProgCtrl.2 например), потом, воспользовавшись контекстым меню, выполняешь "Insert Object" -> Create Control. После этого можно импортировать пакеты. Достоинства этого метода проверены на практике. Указав сначала класс, потом не будет проблем с выбором объекта и пакетов. Списки, как правило, содержат по 1 или 2 значения, соотнесенных с классом. Пакеты содержат список констант, процедуры и функции для работы со свойствами и методами ActiveX элемента. Разбирать трудно, но можно. Для получения указателя на объект можно воспользоваться функцией Get_Interface_Pointer или конструкцией :item('demo.mapi').interface, что идентично. Напоследок пример кода для управления Microsoft Progress Bar:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Declare
  Ole_Object OleObj := :item('demo.activex').interface;
Begin
    For i in  1 .. 100  Loop
      dbms_lock.sleep( 1 );
      MSComctlLib_IProgressBar.Value(Ole_Object, i);
    end loop;
End;
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318084
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Счас попробую :)
у меня:
Forms [32 Bit] Version 6.0.8.11.3 (Production)
Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
Oracle Toolkit Version 6.0.5.35.0 (Production)
PL/SQL Version 8.0.6.0.0 (Production)
Oracle Procedure Builder V6.0.8.14.0 Build #652 - Production
PL/SQL Editor (c) WinMain Software (www.winmain.com), v1.0 (Production)
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318171
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не выходит.. :(
* Жму на Forms OCX / insert object
Выбираю Microsoft Progress Bar, вставляю.
* у созданного ActiveX компонента захожу в свойство OLE CLASS
выбираю MSComctlLib.ProgCtrl.2 (?)
* захожу Program / Import Ole Library Interfaces, импортирую MSComctlLib.ProgCtrl.2
в Program Units появился юнит MSComctlLib, в котором можно найти
"SUBTYPE IProgressBar IS OleObj;"

*копирую и запускаю код
Declare
Ole_Object OleObj := :item('demo.pb').interface;
Begin
For i in 1..100 Loop
dbms_lock.sleep(1);
MSComctlLib_IProgressBar.Value(Ole_Object, i);
end loop;
End;

и наблюдаю "MSComctlLib_IProgressBar.value must be declared"
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318208
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом все правильно. Правда, сначала нужно указать OLE Class, а потом встроить объект. Но при корректном выполнении это сути не меняет, просто упрощает жизнь. При импортировании методов не надо снимать курсор с OLE-контейнера, тогда будет правильно идентифицирован соответствующий набор пакетов. Забыл указать, что пакетов (Methods Packages) при импортировании может быть несколько. Для MSComctlLib.ProgCtrl.2 их порядка 25 штук. Нужно с помощью Ctrl+Mouse Click выбрать нужные. Для Progress Bar это пакет IProgressBar. Тогда он успешно встроиться, и его можно будет наблюдать в секции Program Units Навигатора формы. Удачи!
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318306
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_Evdokimov* захожу Program / Import Ole Library Interfaces, импортирую MSComctlLib.ProgCtrl.2

Галочкие все поставил,какие только можно? :=).

На Progress Bar'е не пробывал, но обычно появляется несколько пакетов. Напримерно отдельный пакет с константами. Скорее всего, какие-то галочки (импортировать методы, константы и т.д.) не поставил. IMHO
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318678
Фотография рубль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам не пробовал но может это поможет
http://asktom.oracle.com/pls/ask/f?p=4950:8:16508596897347741749::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:436019780473

или еще у Тома посматри http://asktom.oracle.com/pls/ask/f?p=4950:1:
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318889
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пакет с константами импортируется всегда. А вот пакет с методами нужно сначала выбрать конкретный в списке методов (при этом нужно, чтобы стояла галка либо в поле "Methods", либо в поле "Properties"). После этого он встроится.
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33318922
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пакет с методами - понятно. Progress Bar так и не заработал - ругается на объявления пакета. Ну и ладно. Компонент который я хотел вставить - Formula one Workbook Forms скушал на ура. Новая проблема - в дизайн-тайме в ОЛЕ-контейнер вставлен мой ActiveX, в рантайме там пусто и вываливается ошибка:
FRM-41344: OLE object not defined for %s in the current record.
Cause: An empty OLE container is defined.
Action: Define an OLE object to reside in the OLE container.
Level: 20
Type: Error

В хелпе ничего интересного не нашел - кроме:
ActiveX controls should only be added to single record blocks.
To create a single-record block, set the Number of Records Displayed block property to 1, or set the the Number of Items Displayed property (for the ActiveX control container)to 1.

Выставил этот самый Number of Items Displayed в единичку - та же история...
Чего делать? :(
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33319112
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, что ошибка FRM-40735 появляется в следующем случае, описанном на Metalink'e
Код: plaintext
1.
2.
An OCX control is not instantiated until it is drawn. To ensure that the 
OCX is drawn, call the SYNCHRONIZE built-in or display the canvas containing 
the OLE object before using FORMS_OLE.GET_INTERFACE_POINTER.
А можно по-подробнее описать activeX-элемент, который ты юзаешь (класс, полное наименование), а то что-то я его не нахожу в стандартных. Кстати, если нужен образец формы с ProgressBar, то напиши на почту (в Details), я пришлю
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33319184
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Tolmachov Dmitiry:
Почта чего-то накрылась...
Компонент, который я пытаюсь засунуть в Forms называется Tidestone Formula One ver.6.1.
Его можно найти на Tidestone.com или могу выслать вечером из дома.
Это очень удобный Excel - совместимый ActiveX, который я широко использовал в своих проектах на Дельфи. После перехода на Forms появилось желание попробовать использовать его дальше.
И пришли плиз форму с примером Progress Bar - у меня не получилось.
Большое спасибо.
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33319189
Фотография Sergey_Evdokimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет прислать.... млин... чуть позже я кину адрес...
...
Рейтинг: 0 / 0
OCX (activeX) в Oracle Forms??!!
    #33319396
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первым делом, ставить последний патч на Forms. IMHO В 6i в области OLE, глюк до одури.

Можеш прислать свой ActiveX control на tigralen собака mail.ru. Постараюсь посмотреть, если будет время.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / OCX (activeX) в Oracle Forms??!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]