Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / OCX (activeX) в Oracle Forms??!! / 14 сообщений из 14, страница 1 из 1
11.10.2005, 16:19
    #33317899
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Не нашел на форуме и до сих пор не понял по хелпу как читать/писать свойства 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
11.10.2005, 16:29
    #33317924
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Не нашел на форуме и до сих пор не понял по хелпу как читать/писать свойства 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
11.10.2005, 17:09
    #33318065
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Какая версия 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
11.10.2005, 17:30
    #33318084
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Счас попробую :)
у меня:
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
11.10.2005, 17:57
    #33318171
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
не выходит.. :(
* Жму на 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
11.10.2005, 18:08
    #33318208
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
В целом все правильно. Правда, сначала нужно указать OLE Class, а потом встроить объект. Но при корректном выполнении это сути не меняет, просто упрощает жизнь. При импортировании методов не надо снимать курсор с OLE-контейнера, тогда будет правильно идентифицирован соответствующий набор пакетов. Забыл указать, что пакетов (Methods Packages) при импортировании может быть несколько. Для MSComctlLib.ProgCtrl.2 их порядка 25 штук. Нужно с помощью Ctrl+Mouse Click выбрать нужные. Для Progress Bar это пакет IProgressBar. Тогда он успешно встроиться, и его можно будет наблюдать в секции Program Units Навигатора формы. Удачи!
...
Рейтинг: 0 / 0
11.10.2005, 18:53
    #33318306
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Sergey_Evdokimov* захожу Program / Import Ole Library Interfaces, импортирую MSComctlLib.ProgCtrl.2

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

На Progress Bar'е не пробывал, но обычно появляется несколько пакетов. Напримерно отдельный пакет с константами. Скорее всего, какие-то галочки (импортировать методы, константы и т.д.) не поставил. IMHO
...
Рейтинг: 0 / 0
12.10.2005, 05:37
    #33318678
рубль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
сам не пробовал но может это поможет
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
12.10.2005, 09:29
    #33318889
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Пакет с константами импортируется всегда. А вот пакет с методами нужно сначала выбрать конкретный в списке методов (при этом нужно, чтобы стояла галка либо в поле "Methods", либо в поле "Properties"). После этого он встроится.
...
Рейтинг: 0 / 0
12.10.2005, 09:38
    #33318922
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Пакет с методами - понятно. 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
12.10.2005, 10:27
    #33319112
Tolmachov Dmitiry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Возможно, что ошибка 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
12.10.2005, 10:56
    #33319184
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
to Tolmachov Dmitiry:
Почта чего-то накрылась...
Компонент, который я пытаюсь засунуть в Forms называется Tidestone Formula One ver.6.1.
Его можно найти на Tidestone.com или могу выслать вечером из дома.
Это очень удобный Excel - совместимый ActiveX, который я широко использовал в своих проектах на Дельфи. После перехода на Forms появилось желание попробовать использовать его дальше.
И пришли плиз форму с примером Progress Bar - у меня не получилось.
Большое спасибо.
...
Рейтинг: 0 / 0
12.10.2005, 10:57
    #33319189
Sergey_Evdokimov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Насчет прислать.... млин... чуть позже я кину адрес...
...
Рейтинг: 0 / 0
12.10.2005, 11:51
    #33319396
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OCX (activeX) в Oracle Forms??!!
Первым делом, ставить последний патч на Forms. IMHO В 6i в области OLE, глюк до одури.

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


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