|
|
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
Я пришел в PB после C++ Builder и Delphi и был неприятно удивлен отсутствием автоматического Resize у окон, т.е. изменение размеров окна необходимо обрабатывать и соответственно двигать и изменять размеры всех контролов окна так, как это необходимо исходя из интерфейса. Хотелось бы узнать, как можно это автоматизировать, может быть в pfc есть готовые шаблоны (просто я сам с pfc не работал), вообще, хотелось бы услышать ваше мнение, товарищи программисты, кто как с этой проблемой справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 17:49 |
|
||
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
PB больше заточен под работу с БД, а если хочешь красивый интерфейс, то пишешь ручками САМ. А от PFC лучше брать идею, а не сам PFC (моё мнение). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:01 |
|
||
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
ИвановННЯ пришел в PB после C++ Builder и Delphi... ИвановННХотелось бы узнать, как можно это автоматизировать, может быть в pfc есть готовые шаблоны (просто я сам с pfc не работал), вообще, хотелось бы услышать ваше мнение, товарищи программисты, кто как с этой проблемой справляется.Да, можно использовать pfc (n_cst_resize и n_cst_dwsrv_resize), там все уже придумано. А можно реализовать аналогичные вещи самостоятельно. Полагаю, что можно даже имитировать аналог свойства Align (или как он там называется)... Дальше сплошное IMHO. Если под программированием понимать не клепание формочек, а построение архитектуры и технологии разработки, то никакой проблемы нет - либо используешь подход, предлагаемый вендором, либо разрабатываешь этот подход самостоятельно. Разработка корректного ресайза в этом случае составит менее одного процента общей трудоемкости разработки приложения, причем делается один раз на всю жизнь :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:05 |
|
||
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
use pfc in event pfc_preopen() for window this.of_setresize(true) this.inv_resize.of_register(<object>,x,y,width, height) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 18:06 |
|
||
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
/topic/134696&hl= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 22:45 |
|
||
|
Программирование события Resize у окон
|
|||
|---|---|---|---|
|
#18+
Для PB6.5 и выше //************ Обработка для Resize ************************ // В instance variable должна быть определена переменная // uo_resize_window io_resize_window // Определение первого запуска и создание управляющего элемента - UserObject-а IF NOT(IsValid(io_resize_window)) THEN ; io_resize_window = Create uo_resize_window ; END IF // Исключаются режимы minimize и режимы popup-окон IF (sizetype > 2) OR sizetype = 1 THEN ; Return(0) ; END IF // Вызов универсального resizer-а io_resize_window.of_resize(This,newwidth,newheight,4,4,"tabpage_6 cbx_2 ") // Эта функция при первом вызове "подбирает" все обьекты на окне , включая размещенные // на закладках и userobject-ах со вложенностью до 6 и сохраняет в instance массиве // все данные по их координатам и размерам (включая fontsize) // при повторных вызовах - выполняется move&resize этих обьектов // // Параметры функции of_resize(window a_window,int newwidth,int newheight, & // int One_Dim_mode, int Two_Dim_mode,{string as_exception} ) // a_window - обязательно THIS // newwidth, newheight - новые значения ширины и высоты - параметры event resize // Все обьекты , располагающиеся на window делятся на две категории : // одноразмерные - те , которые располагаются в одну строку // CASE commandbutton! , statictext! , singlelineedit!, checkbox!, editmask!,& // dropdownlistbox!, picturebutton!, radiobutton! // остальные - двухразмерные // // Режимы - отдельно для одномерных и двумерных обьектов - one_dim_mode/two_dim_mode // 0 - do nothing // 1 - только move - пропорциональное изменение положение верхнего левого угла обьекта // 2 - (1) + изменение размера только по ширине // 3 - (1) + изменение размера по обеим координатам // 4 - (3) + изменение размера шрифта в соответсвии с изменением newheight, для обьектов // в которых существует этот property // для DataWidow и RTF - не относится - нужно управлять шрифтом внутри обьекта // // Рекомендуемые параметры по умолчанию {One_Dim_mode =2 , Two_Dim_mode = 3} //as_exception - необязательный строчный список обьектов-исключений вида "tab_12 cb_34 " , // на которые Resizer не влияет ; если в список входит обьект типа tab или tabpage // - то и все "лежащие" на нем также не видоизменяются // // Внимание!!! - естественно - resizer не совместим и не допустим к применению совместно с любым // иным resizer-ом, особенно из PFC //Debug messages This.St_1.Text="StaticText Width/Height = " + String(This.Width)+"/"+String(This.Height) Return(0) // Обязательно выполнить деструктор обьекта // Включить в event [Close] - Destroy io_resize_window // SPb,ZhV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=88&tid=1338454]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 389ms |

| 0 / 0 |
