Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PFC resize / 12 сообщений из 12, страница 1 из 1
03.06.2005, 14:18
    #33099800
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
создал новый PFC-application в PB9, всё согласно help. Но ... что-то не то с ресайзм:
открываю sheet (из frame) так:
Код: plaintext
1.
2.
3.
4.
5.
6.
string	ls_sheet
window	lw_sheet
long		ll_Rtn

ls_sheet = Message.StringParm

ll_Rtn = OpenSheet( lw_Sheet, ls_Sheet, this,  0 , Original! )
в pfc_PreOpen sheet'а:
Код: plaintext
1.
2.
3.
long	ll_Rtn

ll_Rtn = this.of_SetResize( TRUE )
ll_Rtn = this.inv_Resize.of_Register( dw_Main, this.inv_Resize.SCALERIGHTBOTTOM )
в результате получаем:
...
Рейтинг: 0 / 0
03.06.2005, 14:18
    #33099803
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
а должно быть так:
...
Рейтинг: 0 / 0
03.06.2005, 14:29
    #33099847
Mykola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
если не трудно покажите картинку исходного окна до resize
...
Рейтинг: 0 / 0
03.06.2005, 15:06
    #33099984
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
Mykolaесли не трудно покажите картинку исходного окна до resize
нетрудно ... т.е. все картинки показаны :) вторая - без resiz'a ...

debug показывает "кривизну" после
Код: plaintext
inv_resize.Event pfc_Resize (sizetype, This.WorkSpaceWidth(), This.WorkSpaceHeight())
(вызывается в pfc_w_master::resize )
...
Рейтинг: 0 / 0
03.06.2005, 15:50
    #33100148
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
alexis glinskiсоздал новый PFC-application в PB9, всё согласно help. Но ... что-то не то с ресайзм:
Перед регистрацие контрола в сервисе установите желаемый размер
Код: plaintext
1.
2.
3.
4.
5.
long	ll_Rtn
//примерно так
dw_Main.Resize (This.WorkSpaceWidth() - dw_Main.X, This.WorkSpaceHeight() - dw_Main.Y)
////////////
ll_Rtn = this.of_SetResize( TRUE )
ll_Rtn = this.inv_Resize.of_Register( dw_Main, this.inv_Resize.SCALERIGHTBOTTOM )
...
Рейтинг: 0 / 0
03.06.2005, 16:29
    #33100299
Mykola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
если вторая картинка исходное окно то все верно resize pfc работает в % отношении
(
add script in event resize for window
dw_1.width = newwidth - dw_1.x
dw_1.height = newheight - dw_1.y
)
...
Рейтинг: 0 / 0
03.06.2005, 16:36
    #33100315
cbusel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
Когда-то разбирался и повесил следующую соплю в pfc_resize на одноименном событии :
Код: plaintext
1.
2.
3.
4.
5.
6.
if ib_first and aul_sizetype =  0  then             
//  17 . 08 . 04  сопля для  9 -ки (первый resize запускается с меньшими параметрами)
	this.of_SetOrigSize(ai_newwidth,ai_newHeight)
	ib_first = false
end if
return super::event pfc_resize(aul_sizetype,ai_newwidth,ai_newheight)
Вроде как в 9-ке первый resize исполняется раньше,чем open и размер окна передается неправильно.
...
Рейтинг: 0 / 0
03.06.2005, 16:47
    #33100338
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
Mykolaесли вторая картинка исходное окно то все верно resize pfc работает в % отношении
(
add script in event resize for window
dw_1.width = newwidth - dw_1.x
dw_1.height = newheight - dw_1.y
)
спасибо за ответ ...
но ... ведь по default'у всё должно работать без доп. кода. Если я создаю PFC-application в PB6 - всё OK.
...
Рейтинг: 0 / 0
03.06.2005, 17:20
    #33100431
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
Вообще говоря, с resize особенных проблем нет. Я обычно поступаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
This.of_SetResize(True)
//                            control      X    Y    W    H
This.inv_resize.of_Register( gb_master,     0 ,    0 ,  100 ,  100 )
This.inv_resize.of_Register( dw_master,     0 ,    0 ,  100 ,  100 )
This.inv_resize.of_Register( st_buttons,    0 ,  100 ,  100 ,    0 )
This.inv_resize.of_Register( cb_start,    100 ,  100 ,    0 ,    0 )
This.inv_resize.of_Register( cb_stop,     100 ,  100 ,    0 ,    0 )
This.inv_resize.of_Register( cb_exit,     100 ,  100 ,    0 ,    0 )
...
Рейтинг: 0 / 0
04.06.2005, 20:33
    #33101192
dp_tnd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
AIZВообще говоря, с resize особенных проблем нет. Я обычно поступаю

Вообще говоря, с resize проблема как раз есть и она появилась где то в 8 или 9 версии.

Мы с 99 года используем свой вариант PFC (удалили полностью pfe слой ) и, когда в прошлом году переезжали на pb9 и накатили обновления PFC на эти же грабли наступили.

Вскрытие показало, что где-то в of_SetResize() было "исправлено" определение начального размера окна. Вместо определения истинного размера клиентской области окна ( WorkSpaceWidth() и WorkSpaceHeight(), точно не помню) они обращаются к метаданным объекта и получают размеры, которые назначил дизайнер.

А при открытии окна, его высота увеличивается на размер строки заголовка и меню с тулбарами. Особенно это заметно под Windows XP с его "карамельным" дизайном - тоже пришлось костыль подставлять, но подробности уже забыл :(.

Я к исходникам доступ получу только во вторник, а на память уже не помню. Но думаю, что сами легко разберетесь.

Копать нужно of_SetResize() у WindowMaster.

Если не получится, я ткну пальцем, но только во вторник.
...
Рейтинг: 0 / 0
05.06.2005, 15:18
    #33101485
gz
gz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
dp_tndЕсли не получится, я ткну пальцем, но только во вторник.
Можно ткнуть чуть раньше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
//////////////////////////////////////////////////////////////////////////////
//	Public Function:  of_SetResize
//	Arguments:		ab_switch   starts/stops the window resize service
//	Returns:			Integer 		 1  = success,   0  = no action necessary, - 1  error
//	Description:		Starts or stops the window resize service
//////////////////////////////////////////////////////////////////////////////
//	Rev. History:	Version
//						 5 . 0    Initial version
//						 8 . 0    Modified to initially set window dimensions based on the class definition
//////////////////////////////////////////////////////////////////////////////
//	Copyright ©  1996 - 2001  Sybase, Inc. and its subsidiaries.  All rights reserved.  Any distribution of the 
// PowerBuilder Foundation Classes (PFC) source code by other than Sybase, Inc. and its subsidiaries is prohibited.
//////////////////////////////////////////////////////////////////////////////
integer	li_rc, li_v, li_vars
integer li_origwidth, li_origheight

// Check arguments
if IsNull (ab_switch) then
	return - 1 
end if

if ab_Switch then
	if IsNull(inv_resize) Or not IsValid (inv_resize) then
		inv_resize = create n_cst_resize
		
		/*  Get this window's class definition and extract the width and height  */
//		classdefinition lcd_class
//		lcd_class = this.ClassDefinition
//		
//		li_vars = UpperBound ( lcd_class.VariableList )
//		For li_v =  1  to li_vars
//			If lcd_class.VariableList[li_v].Name = "width" Then li_origwidth = Integer ( lcd_class.VariableList[li_v].InitialValue ) 
//			If lcd_class.VariableList[li_v].Name = "height" Then li_origheight = Integer ( lcd_class.VariableList[li_v].InitialValue ) 
//			If li_origwidth >  0  And li_origheight >  0  Then Exit
//		Next
//		inv_resize.of_SetOrigSize ( li_origwidth, li_origheight )
		inv_resize.of_SetOrigSize (this.WorkSpaceWidth(), this.WorkSpaceHeight())
		li_rc =  1 
	end if
else
	if IsValid (inv_resize) then
		destroy inv_resize
		li_rc =  1 
	end if
end If

return li_rc
...
Рейтинг: 0 / 0
06.06.2005, 11:29
    #33102205
alexis glinski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PFC resize
gzМожно ткнуть чуть раньше
спасибо !!!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PFC resize / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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