|
|
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Такой вопросец: У меня экран 17" Резолюция стоит 1024х768. Весь проект с такими показателями смотрится хорошо. Беда, если резолюция выше - 800х600 (не говоря уже о 640х480). Тогда окно вылазит за пределы экрана. Как можно задать размеры окон вне зависимости от разрешения монитора? И как уменьшить окна, если монитор 15"? В проекте есть окно mdi + вызываются окна response + вызываются другие проекты (тоже написанные на PB). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 12:56 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Ну так сделай все окна такими, чтобы они влезали в "минимальный" размер экрана (о 640*480 можно уже забывать, 800*600 - вполне разумный минимум). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 13:21 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Dim2000Ну так сделай все окна такими, чтобы они влезали в "минимальный" размер экрана (о 640*480 можно уже забывать, 800*600 - вполне разумный минимум). Проект уже готов. К тому же в этом случае получатся очень маленькие окошки при разрешении 1280х1024 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 13:31 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 13:35 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Сотников Тема уже обсуждалась Я был здесь: http://%5D%7C>]http://]|> http://www.pfcguide.com/downloads/pfcobjs.zip , перетащил к себе n_cst_resize. Сейчас пытаюсь разобраться, что с ним делать. Может быть кто-нибудь подскажет, как эту беду использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 13:59 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Мы ходили по этому пути давным-давно (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 с примерами ресайса: поищи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 14:15 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
RiskaПроект уже готов. Значит, не готов ;). К тому же в этом случае получатся очень маленькие окошки при разрешении 1280х1024 Так и должно быть. Если кто-то захочет видеть большие окошки - он поставит видеорежим поменьше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 14:22 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Для resize объектов можно пользоваться чем угодно, хоть своими функциями, хоть из pfc взять сервис. Для содержимого DW есть свойство ZOOM. dw_control.Object.DataWindow.Zoom Указывается в процентах. Посчитать проценты изменения размеров окна относительно оригинальных и выставить соответсвующий zoom. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 14:38 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Riska Сотников Тема уже обсуждалась Я был здесь: http://" TARGET="_blank">http://]http://www.pfcguide.com/downloads/pfcobjs.zip, перетащил к себе n_cst_resize. Сейчас пытаюсь разобраться, что с ним делать. Может быть кто-нибудь подскажет, как эту беду использовать. Неужели никто не знает, как запустить этот чертов n_cst_resize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 15:35 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
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... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 15:50 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
есть n_cst_resize 1) в instance Код: plaintext Код: plaintext 1. 2. 3. 4. Код: plaintext УСЕ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 16:06 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
f45fесть n_cst_resize 1) в instance Код: plaintext Код: plaintext 1. 2. 3. 4. Код: plaintext УСЕ Я вот эту строку не понимаю: res.of_Register(pb_1,"FixedToRight") // регистрируем объект Что такое "pb_1"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 17:42 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
pb_1 - picture button? может быть дюбой другой объект cb_1 (command button), sle_1 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 17:48 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
f45fpb_1 - picture button? может быть дюбой другой объект cb_1 (command button), sle_1 и т.д. Мне надо уменьшить все окно со всеми объектами, которые внутри (включая объекты в DW). В окне mdi, например, вообще объектов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 17:59 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Причем все это должно произойти автоматически при открытии окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 18:04 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
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. Для DataWindow потребуется немного другой алгоритм, смысл которого, как справедливо заметил E-doc...Для содержимого DW есть свойство ZOOM. dw_control.Object.DataWindow.Zoom Указывается в процентах. Посчитать проценты изменения размеров окна относительно оригинальных и выставить соответсвующий zoom. Все это можно использовать совместно с n_cst_resize. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 18:32 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
PL99вызываем ее по мере необходимости (например, в конструкторе или в случае, когда пользователь изменяет разрешение экрана).Почитал соседний топик , и решил, что я, пожалуй, погорячился. В pfc-приложениях есть специальные события окна pfc_preopen и pfc_postopen, в которых и следует писать подобный код. Спасибо за понимание :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 18:42 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
RiskaМне надо уменьшить все окно со всеми объектами, которые внутри (включая объекты в DW). В окне mdi, например, вообще объектов нет. res.of_SetOrigSize(x,x) твое рабочее разрешение (1024х768)- в Юнитах res.of_SetMinSize(0,0) минимальный размер окна, до которого ресайзатся объекты. (800х600) - тоже в Юнитах регистрируешь нужные контролы и наслаждаешься. для dw - то что сказал PL99, хотя можно и аналогичным образом поступить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 18:44 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
авторВообще-то, IMHO, n_cst_resize предназначен для других целей, а именно - обеспечение фиксированного расположения объектов на окне и/или элементов DW внутри объекта DW при изменении размеров окна. Есля я вас правильно понял, то в вашем случае надо, в зависимости от разрешения экрана, изменять физические размеры управляющих элементов (в пикселях, например). Мне как раз и нужно, чтобы размер был фиксированным. Просто в случае изменения резолюции автоматически меняются и окна. Мне надо вернуть в прежднее состояние. Если можно как-то сказать, чтобы размер окон программы не менялся при любых резолюциях, будет еще лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 18:52 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 20:39 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:02 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Шутить изволите.... В 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 22:57 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Я, наверное, чего-то не понимаю. Вы предлагаете в каждом окне прописывать изменения для каждого элемента в отдельности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 23:45 |
|
||
|
Размер окон при разных резолюциях
|
|||
|---|---|---|---|
|
#18+
Пишите мыло. Кину объект n_cst_globalresize. Достаточно зарегистрировать в нем окно и он сам отресайзит его под нужное разрешение экрана. Ресайзит всё, включая Datawindow. Без pfc не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32763179&tid=1338745]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 398ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...