Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Размер окон при разных резолюциях / 25 сообщений из 25, страница 1 из 1
01.11.2004, 12:56
    #32762974
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Такой вопросец:
У меня экран 17" Резолюция стоит 1024х768. Весь проект с такими показателями смотрится хорошо. Беда, если резолюция выше - 800х600 (не говоря уже о 640х480). Тогда окно вылазит за пределы экрана. Как можно задать размеры окон вне зависимости от разрешения монитора? И как уменьшить окна, если монитор 15"?
В проекте есть окно mdi + вызываются окна response + вызываются другие проекты (тоже написанные на PB).
...
Рейтинг: 0 / 0
01.11.2004, 13:21
    #32763046
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Ну так сделай все окна такими, чтобы они влезали в "минимальный" размер экрана (о 640*480 можно уже забывать, 800*600 - вполне разумный минимум).
...
Рейтинг: 0 / 0
01.11.2004, 13:31
    #32763072
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Dim2000Ну так сделай все окна такими, чтобы они влезали в "минимальный" размер экрана (о 640*480 можно уже забывать, 800*600 - вполне разумный минимум).
Проект уже готов. К тому же в этом случае получатся очень маленькие окошки при разрешении 1280х1024
...
Рейтинг: 0 / 0
01.11.2004, 13:35
    #32763084
Сотников
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
...
Рейтинг: 0 / 0
01.11.2004, 13:59
    #32763141
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Сотников Тема уже обсуждалась
Я был здесь: http://%5D%7C>]http://]|> http://www.pfcguide.com/downloads/pfcobjs.zip , перетащил к себе n_cst_resize. Сейчас пытаюсь разобраться, что с ним делать. Может быть кто-нибудь подскажет, как эту беду использовать.
...
Рейтинг: 0 / 0
01.11.2004, 14:15
    #32763179
Nividimka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Мы ходили по этому пути давным-давно (pfc resize). Имхо, он тупиковый (без существенных пределок). При сложном интерфейсе всё получается очень и очень коряво.
Посмотри http://www.google.ru/groups?hl=ru&lr=&threadm=7nrqmm%24aal%241%40news.sovam.com&rnum=1&prev=/groups%3Fhl%3Dru%26lr%3D%26selm%3D7nrqmm%2524aal%25241%2540news.sovam.com

Еще была какая-то статейка в pbdj с примерами ресайса: поищи.
...
Рейтинг: 0 / 0
01.11.2004, 14:22
    #32763193
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
RiskaПроект уже готов.
Значит, не готов ;).

К тому же в этом случае получатся очень маленькие окошки при разрешении 1280х1024
Так и должно быть. Если кто-то захочет видеть большие окошки - он поставит видеорежим поменьше.
...
Рейтинг: 0 / 0
01.11.2004, 14:38
    #32763230
E-doc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Для resize объектов можно пользоваться чем угодно, хоть своими функциями, хоть из pfc взять сервис. Для содержимого DW есть свойство ZOOM.
dw_control.Object.DataWindow.Zoom Указывается в процентах. Посчитать проценты изменения размеров окна относительно оригинальных и выставить соответсвующий zoom.
...
Рейтинг: 0 / 0
01.11.2004, 15:35
    #32763401
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Riska Сотников Тема уже обсуждалась
Я был здесь: http://" TARGET="_blank">http://]http://www.pfcguide.com/downloads/pfcobjs.zip, перетащил к себе n_cst_resize. Сейчас пытаюсь разобраться, что с ним делать. Может быть кто-нибудь подскажет, как эту беду использовать.
Неужели никто не знает, как запустить этот чертов n_cst_resize?
...
Рейтинг: 0 / 0
01.11.2004, 15:50
    #32763465
zuzu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
ti vidno ne sovsem ponimaesi problemu,
tut esli daje pritepisi etot n_cst_resize, to avtomatom ne vse u tebea budet resizetsea, tak kak dlea etogo ti doljen v svoem proekte imeti:
vse okna doljni inheritetsea ot tvoego odnogo, vse dw, takje ot odnogo potomka, nu i tak dalee, a potom toliko meneati kod v etih bazovih obiektak,
inace tebe pridiotsea rucikami meneati vo vseh oknah event resize, net drugovo resenia dlea tebea...
...
Рейтинг: 0 / 0
01.11.2004, 16:06
    #32763513
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
есть n_cst_resize
1) в instance
Код: plaintext
n_cst_resize res 
2) в open евенте окна
Код: plaintext
1.
2.
3.
4.
   res = create n_cst_resize
   res.of_SetOrigSize( 70 , 70 )   // начальные установки
   res.of_SetMinSize( 70 , 70 )   // начальные установки
   res.of_Register(pb_1,"FixedToRight")  // регистрируем объект
3) в resize евенте окна
Код: plaintext
   res.event pfc_resize(sizetype,width,height)

УСЕ
...
Рейтинг: 0 / 0
01.11.2004, 17:42
    #32763806
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
f45fесть n_cst_resize
1) в instance
Код: plaintext
n_cst_resize res 
2) в open евенте окна
Код: plaintext
1.
2.
3.
4.
   res = create n_cst_resize
   res.of_SetOrigSize( 70 , 70 )   // начальные установки
   res.of_SetMinSize( 70 , 70 )   // начальные установки
   res.of_Register(pb_1,"FixedToRight")  // регистрируем объект
3) в resize евенте окна
Код: plaintext
   res.event pfc_resize(sizetype,width,height)

УСЕ
Я вот эту строку не понимаю:
res.of_Register(pb_1,"FixedToRight") // регистрируем объект
Что такое "pb_1"?
...
Рейтинг: 0 / 0
01.11.2004, 17:48
    #32763818
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
pb_1 - picture button?
может быть дюбой другой объект cb_1 (command button), sle_1 и т.д.
...
Рейтинг: 0 / 0
01.11.2004, 17:59
    #32763845
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
f45fpb_1 - picture button?
может быть дюбой другой объект cb_1 (command button), sle_1 и т.д.
Мне надо уменьшить все окно со всеми объектами, которые внутри (включая объекты в DW). В окне mdi, например, вообще объектов нет.
...
Рейтинг: 0 / 0
01.11.2004, 18:04
    #32763861
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Причем все это должно произойти автоматически при открытии окна.
...
Рейтинг: 0 / 0
01.11.2004, 18:32
    #32763898
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Riska f45fpb_1 - picture button?
может быть дюбой другой объект cb_1 (command button), sle_1 и т.д.
Мне надо уменьшить все окно со всеми объектами, которые внутри (включая объекты в DW). В окне mdi, например, вообще объектов нет.Вообще-то, IMHO, n_cst_resize предназначен для других целей, а именно - обеспечение фиксированного расположения объектов на окне и/или элементов DW внутри объекта DW при изменении размеров окна. Есля я вас правильно понял, то в вашем случае надо, в зависимости от разрешения экрана, изменять физические размеры управляющих элементов (в пикселях, например). Мне кажется, что такую функциональность несложно разработать самостоятельно, используя, допустим коэффициент пересчета для базового разрешения.
Итак, используя pfc, для всех визуальных объектов в библиотеке pfe_main пишем функцию вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public function integer of_resolution ();environment env
integer rtn
decimal ld_RelationX, ld_RelationY
rtn = GetEnvironment(env)
IF rtn <>  1  THEN RETURN - 1  
ld_RelationY = env.ScreenHeight /  1024 
ld_RelationX = env.ScreenWidth /  768 

this.resize (this.Width * ld_RelationX, this.height * ld_RelationY)
return  1 
end function
и вызываем ее по мере необходимости (например, в конструкторе или в случае, когда пользователь изменяет разрешение экрана).
Для DataWindow потребуется немного другой алгоритм, смысл которого, как справедливо заметил E-doc...Для содержимого DW есть свойство ZOOM.
dw_control.Object.DataWindow.Zoom Указывается в процентах. Посчитать проценты изменения размеров окна относительно оригинальных и выставить соответсвующий zoom.
Все это можно использовать совместно с n_cst_resize.
...
Рейтинг: 0 / 0
01.11.2004, 18:42
    #32763920
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
PL99вызываем ее по мере необходимости (например, в конструкторе или в случае, когда пользователь изменяет разрешение экрана).Почитал соседний топик , и решил, что я, пожалуй, погорячился. В pfc-приложениях есть специальные события окна pfc_preopen и pfc_postopen, в которых и следует писать подобный код. Спасибо за понимание :-))
...
Рейтинг: 0 / 0
01.11.2004, 18:44
    #32763926
f45f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
RiskaМне надо уменьшить все окно со всеми объектами, которые внутри (включая объекты в DW). В окне mdi, например, вообще объектов нет.

res.of_SetOrigSize(x,x) твое рабочее разрешение (1024х768)- в Юнитах
res.of_SetMinSize(0,0) минимальный размер окна, до которого ресайзатся
объекты. (800х600) - тоже в Юнитах

регистрируешь нужные контролы и наслаждаешься. для dw - то что сказал
PL99, хотя можно и аналогичным образом поступить.
...
Рейтинг: 0 / 0
01.11.2004, 18:52
    #32763941
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
авторВообще-то, IMHO, n_cst_resize предназначен для других целей, а именно - обеспечение фиксированного расположения объектов на окне и/или элементов DW внутри объекта DW при изменении размеров окна. Есля я вас правильно понял, то в вашем случае надо, в зависимости от разрешения экрана, изменять физические размеры управляющих элементов (в пикселях, например).
Мне как раз и нужно, чтобы размер был фиксированным. Просто в случае изменения резолюции автоматически меняются и окна. Мне надо вернуть в прежднее состояние. Если можно как-то сказать, чтобы размер окон программы не менялся при любых резолюциях, будет еще лучше.
...
Рейтинг: 0 / 0
01.11.2004, 20:39
    #32764043
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
integer i_int
Environment env

i_int = GetEnvironment(env)

IF i_int = 1 THEN
CHOOSE CASE env.ScreenWidth
CASE 640
dw_1.Height = 950
cbx_1.Y = 1050
/*"Ну и так далее..."*/

END CHOOSE

END IF
...
Рейтинг: 0 / 0
02.11.2004, 17:02
    #32765333
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
voronkinteger i_int
Environment env

i_int = GetEnvironment(env)

IF i_int = 1 THEN
CHOOSE CASE env.ScreenWidth
CASE 640
dw_1.Height = 950
cbx_1.Y = 1050
/*"Ну и так далее..."*/

END CHOOSE

END IF

Это проходит, если одно-два окна в проекте. А если их 20, то поменять ручками не получится. Вот функция, которая это делает. Для моего проекта ее достаточно. Остальным нужно будет добавить переменные (RadioButton и т.д.). Есть еще проблемы с UserObject. Пришлось менять размеры внутри самих объектов + если разные объекты, то тоже будут проблемы.
Если у кого-то есть желание, то можно доделать эту функцию до нормального вида. ldec_coeff = 1.19 - получено экспериментальным путем (если брать 1.28 (1024/800), то все получается мелкое). Все что надо - заслать f_resize(This).

global type f_resize from function_object
end type

forward prototypes
global function integer f_resize (window aw_name)
end prototypes

global function integer f_resize (window aw_name);integer i, l_control
int l_xx, l_yy
dec ldec_coeff = 1.19
windowobject wo
CommandButton cb
DataWindow dw
CheckBox cbx
GroupBox gb
StaticText st
DropDownListBox ddlb
PictureHyperLink phl
UserObject uo
SingleLineEdit sle
EditMask em

l_control = UpperBound(aw_name.Control)
l_xx = GetSystemMetrics(0)
l_yy = GetSystemMetrics(1)

IF l_xx = 800 AND l_yy = 600 THEN
FOR i = 1 TO l_control
wo = aw_name.Control
choose case wo.TypeOf()
case SingleLineEdit!
sle = aw_name.Control
sle.x = sle.x/ldec_coeff
sle.y = sle.y/ldec_coeff
sle.Width = sle.Width/ldec_coeff
sle.Height = sle.Height/ldec_coeff
case UserObject!
uo = aw_name.Control
uo.x = uo.x/ldec_coeff
uo.y = uo.y/ldec_coeff
uo.Width = uo.Width/ldec_coeff
uo.Height = uo.Height/ldec_coeff
case PictureHyperLink!
phl = aw_name.Control
phl.x = phl.x/ldec_coeff
phl.y = phl.y/ldec_coeff
phl.Width = phl.Width/ldec_coeff
phl.Height = phl.Height/ldec_coeff
case CheckBox!
cbx = aw_name.Control
cbx.x = cbx.x/ldec_coeff
cbx.y = cbx.y/ldec_coeff
case CommandButton!
cb = aw_name.Control
cb.x = cb.x/ldec_coeff
cb.y = cb.y/ldec_coeff
cb.Width = cb.Width/ldec_coeff
cb.Height = cb.Height/ldec_coeff
cb.TextSize = cb.TextSize/ldec_coeff
case DataWindow!
dw = aw_name.Control
dw.x = dw.x/ldec_coeff
dw.y = dw.y/ldec_coeff
dw.Width = dw.Width/ldec_coeff
dw.Height = dw.Height/ldec_coeff
dw.Object.DataWindow.Zoom = 84
case GroupBox!
gb = aw_name.Control
gb.x = gb.x/ldec_coeff
gb.y = gb.y/ldec_coeff
gb.Width = gb.Width/ldec_coeff
gb.Height = gb.Height/ldec_coeff
case StaticText!
st = aw_name.Control
st.x = st.x/ldec_coeff
st.y = st.y/ldec_coeff
st.Width = st.Width/ldec_coeff
st.Height = st.Height/ldec_coeff
st.TextSize = st.TextSize/ldec_coeff
case DropDownListBox!
ddlb = aw_name.Control
ddlb.x = ddlb.x/ldec_coeff
ddlb.y = ddlb.y/ldec_coeff
ddlb.Width = ddlb.Width/ldec_coeff
ddlb.Height = ddlb.Height/ldec_coeff
ddlb.TextSize = ddlb.TextSize/ldec_coeff
case EditMask!
em = aw_name.Control
em.x = em.x/ldec_coeff
em.y = em.y/ldec_coeff
em.Width = em.Width/ldec_coeff
em.Height = em.Height/ldec_coeff
em.TextSize = em.TextSize/ldec_coeff
end choose
NEXT
RETURN 1
END IF
RETURN 0
end function
...
Рейтинг: 0 / 0
02.11.2004, 22:57
    #32765749
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Шутить изволите....

В open ивенте каждого окна этот код должен стоять, у меня вся аппликация так работает и хорошо работает, просто нужно с каждым окном повозитса, потом всё...

Riska voronkinteger i_int
Environment env

i_int = GetEnvironment(env)

IF i_int = 1 THEN
CHOOSE CASE env.ScreenWidth
CASE 640
dw_1.Height = 950
cbx_1.Y = 1050
/*"Ну и так далее..."*/

END CHOOSE

END IF

Это проходит, если одно-два окна в проекте. А если их 20, то поменять ручками не получится. Вот функция, которая это делает. Для моего проекта ее достаточно. Остальным нужно будет добавить переменные (RadioButton и т.д.). Есть еще проблемы с UserObject. Пришлось менять размеры внутри самих объектов + если разные объекты, то тоже будут проблемы.
Если у кого-то есть желание, то можно доделать эту функцию до нормального вида. ldec_coeff = 1.19 - получено экспериментальным путем (если брать 1.28 (1024/800), то все получается мелкое). Все что надо - заслать f_resize(This).

global type f_resize from function_object
end type

forward prototypes
global function integer f_resize (window aw_name)
end prototypes

global function integer f_resize (window aw_name);integer i, l_control
int l_xx, l_yy
dec ldec_coeff = 1.19
windowobject wo
CommandButton cb
DataWindow dw
CheckBox cbx
GroupBox gb
StaticText st
DropDownListBox ddlb
PictureHyperLink phl
UserObject uo
SingleLineEdit sle
EditMask em

l_control = UpperBound(aw_name.Control)
l_xx = GetSystemMetrics(0)
l_yy = GetSystemMetrics(1)

IF l_xx = 800 AND l_yy = 600 THEN
FOR i = 1 TO l_control
wo = aw_name.Control
choose case wo.TypeOf()
case SingleLineEdit!
sle = aw_name.Control
sle.x = sle.x/ldec_coeff
sle.y = sle.y/ldec_coeff
sle.Width = sle.Width/ldec_coeff
sle.Height = sle.Height/ldec_coeff
case UserObject!
uo = aw_name.Control
uo.x = uo.x/ldec_coeff
uo.y = uo.y/ldec_coeff
uo.Width = uo.Width/ldec_coeff
uo.Height = uo.Height/ldec_coeff
case PictureHyperLink!
phl = aw_name.Control
phl.x = phl.x/ldec_coeff
phl.y = phl.y/ldec_coeff
phl.Width = phl.Width/ldec_coeff
phl.Height = phl.Height/ldec_coeff
case CheckBox!
cbx = aw_name.Control
cbx.x = cbx.x/ldec_coeff
cbx.y = cbx.y/ldec_coeff
case CommandButton!
cb = aw_name.Control
cb.x = cb.x/ldec_coeff
cb.y = cb.y/ldec_coeff
cb.Width = cb.Width/ldec_coeff
cb.Height = cb.Height/ldec_coeff
cb.TextSize = cb.TextSize/ldec_coeff
case DataWindow!
dw = aw_name.Control
dw.x = dw.x/ldec_coeff
dw.y = dw.y/ldec_coeff
dw.Width = dw.Width/ldec_coeff
dw.Height = dw.Height/ldec_coeff
dw.Object.DataWindow.Zoom = 84
case GroupBox!
gb = aw_name.Control
gb.x = gb.x/ldec_coeff
gb.y = gb.y/ldec_coeff
gb.Width = gb.Width/ldec_coeff
gb.Height = gb.Height/ldec_coeff
case StaticText!
st = aw_name.Control
st.x = st.x/ldec_coeff
st.y = st.y/ldec_coeff
st.Width = st.Width/ldec_coeff
st.Height = st.Height/ldec_coeff
st.TextSize = st.TextSize/ldec_coeff
case DropDownListBox!
ddlb = aw_name.Control
ddlb.x = ddlb.x/ldec_coeff
ddlb.y = ddlb.y/ldec_coeff
ddlb.Width = ddlb.Width/ldec_coeff
ddlb.Height = ddlb.Height/ldec_coeff
ddlb.TextSize = ddlb.TextSize/ldec_coeff
case EditMask!
em = aw_name.Control
em.x = em.x/ldec_coeff
em.y = em.y/ldec_coeff
em.Width = em.Width/ldec_coeff
em.Height = em.Height/ldec_coeff
em.TextSize = em.TextSize/ldec_coeff
end choose
NEXT
RETURN 1
END IF
RETURN 0
end function
...
Рейтинг: 0 / 0
02.11.2004, 23:45
    #32765763
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Я, наверное, чего-то не понимаю. Вы предлагаете в каждом окне прописывать изменения для каждого элемента в отдельности?
...
Рейтинг: 0 / 0
03.11.2004, 17:22
    #32767246
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Пишите мыло. Кину объект n_cst_globalresize.
Достаточно зарегистрировать в нем окно и он сам отресайзит его под нужное разрешение экрана. Ресайзит всё, включая Datawindow.
Без pfc не работает.
...
Рейтинг: 0 / 0
04.11.2004, 12:42
    #32768507
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Размер окон при разных резолюциях
Всем разослал. Пишите, если кому-то не дошло.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Размер окон при разных резолюциях / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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