powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Create visual object в runtime на custom visual userobject
4 сообщений из 4, страница 1 из 1
Create visual object в runtime на custom visual userobject
    #32294552
Паша_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как во время выполнения на custom visual userobject положить контрол. Что-то типа openuserobject в окне.
...
Рейтинг: 0 / 0
Create visual object в runtime на custom visual userobject
    #32294605
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно так и делать (openuserobject). А потом SetParent API использовать.

Код: plaintext
Function ulong SetParent (ulong hWndChild, ulong hWndNewParent) Library  "USER32.DLL" 


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Ulong lul_Button
Ulong lul_uo

 /* uo_button inherits from the system class button 
Open the button on the window */ 
parent.OpenUserObject( iuo_button, 'uo_button',  101 ,  860  )

 /* get the handle of the UO that will become the parent
that already exists */ 
lul_uo = Handle( uo_1 )
lul_button = Handle( iuo_button )

 /* move the button on top of its new parent */ 
parent.SetParent( lul_button, lul_uo )

 /* position the button */ 
iuo_Button.x = (uo_1.Width - iuo_Button.width ) /  2 
iuo_Button.y = (uo_1.Height - iuo_Button.Height) /  2 
 
...
Рейтинг: 0 / 0
Create visual object в runtime на custom visual userobject
    #32294902
Фотография alienzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ulong lul_Button
Ulong lul_uo

/* uo_button inherits from the system class button
Open the button on the window /*
OpenUserObject( cb_uo, 'cb_uo', 101, 860 )

/* get the handle of the UO that will become the parentthat already exists */
lul_uo = Handle( uo_1 )
lul_button = Handle( cb_uo )

/* move the button on top of its new parent */
SetParent( lul_button, lul_uo )

/* position the button */
cb_uo.x = (uo_1.Width - cb_uo.width ) / 2
cb_uo.y = (uo_1.Height - cb_uo.Height) / 2

MessageBox ( '' ,uo_1.GetParent( ).ClassName( ) ) )

//Выдает Парент окна, но можно сделать вот так :
uo_1.Control[ UpperBound( uo_1.Control ) + 1 ] = cb_uo

//Потом проверка :
Long i
For i = 1 to UpperBound( uo_1.Control )
MessageBox ( '', uo_1.Control[ i ].ClassName( ) )
Next

//И все вуаля !
//Мы получаем, что в UO сидит кнопка, хотя все ровно она показывает, что парент у нее окно, а не юзер объект =(



AlienZzzz
...
Рейтинг: 0 / 0
Create visual object в runtime на custom visual userobject
    #32295903
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор писал:Мы получаем, что в UO сидит кнопка, хотя все ровно она показывает, что парент у нее окно, а не юзер объект =(
А что тебя так удивляет?
GetParent( ) выдаёт reference на объект, который либо являлся непосредственным контейнером статически, или есть таковой динамически, причём явно, что это просто указатель, который пишется в класс в момент вызова OpenUserObject()...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Create visual object в runtime на custom visual userobject
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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