Загадка про размер окна
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Загадка про размер окна
Это я знаю. Но это костыль. Я их не очень люблю.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
Странно. Это штатный механизм в кларионе. Действительно, зазеркалье.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1397
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
Загадка про размер окна
Если в ini ничего нет, откроется на полный экран. Если форма ранее открывалась и там что-то есть, откроется согласно сохраненным значениям - либо на полный. либо нетkreator писал(а): ↑30 Октябрь 2020, 19:14 Я просто проверил у себя. И не получил такого эффекта. Сделал по описанию finsoftrz. Открыл два окна в разных потоках в режиме maximize. Из одного окна вызываю форму. Специально на окне формы поставил галку на "maximize" (обычно этого не практикую). Форма изначально не на полный экран (в ini нет отметки об этом). Форма тоже открылась на полный экран. Получилось три окна на полный экран. Для меня поведение "моих" окон логичное. Поэтому и спросил - почему происходит выход из полноэкранного режима?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7691
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 69 раз
Загадка про размер окна
Если принять WinAPI за икону, то вот такая конструкция позволяет получить в Clarion
реальный размер окна (всегда есть заголовок окна, рамка окна DOUBLE / RESIZE):
А значит мы легко можем получить размер окна W{Prop:Width} / W{Prop:Height} идеально
по размеру рабочей области AppFrame, не зависимо от того развёрнут он или нет.
реальный размер окна (всегда есть заголовок окна, рамка окна DOUBLE / RESIZE):
Код: Выделить всё
If xMyGetWindowRect(W{Prop:Handle}, Loc:MInfo.rcWork) ! Определить реальные размеры окна через WinAPI
Loc:PixW = Loc:MInfo.rcWork.eRight - Loc:MInfo.rcWork.eLeft ! Ширина Window в пикселях WinAPI
Loc:PixH = Loc:MInfo.rcWork.eBottom - Loc:MInfo.rcWork.eTop ! Высота Window в пикселях WinAPI
W{Prop:Pixels} = True
Message('WinApi: ' & Loc:PixW & ' x ' & Loc:PixH & '|' & |
'Clarion: ' & W{Prop:Width} + 6 + Choose(Int(W{PROP:Resize}) = True,10,0) & ' x ' & |
W{Prop:Height} + 29 + Choose(Int(W{PROP:Resize}) = True,10,0) + |
Choose(W{PROP:Status,1} = 0,0,21))
end
по размеру рабочей области AppFrame, не зависимо от того развёрнут он или нет.
Make Clarion Great Again !
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Загадка про размер окна
С чего это? У меня не так. Форма ведёт себя также как любое окно. Если одно окно в режиме "Maximize", то остальные тоже открываются в режиме "Maximize". У Вас наверно что-то от себя добавлено, что механизм другой.
Штатный механизм в Кларионе - иметь свойство объекта, которое позволяет задизейблить контрол. Для кнопки "Maximize" он есть. А писать cycle на событии - это костыль.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
Вы это сами придумали? Креативненько.
Similarly, there are several other events whose action can also be terminated by a CYCLE statement: EVENT:Move, EVENT:Size, EVENT:Restore, EVENT:Maximize, and EVENT:Iconize. A CYCLE statement in response to any of these events stops the normal action and prohibits generation of the related EVENT:Moved, EVENT:Sized, EVENT:Restored, EVENT:Maximized, or EVENT:Iconized.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5082
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Загадка про размер окна
Вас понесло в какую-то другую сторону. Вопрос был - почему свойства нет задизейблить кнопку? Пользователь присылает претензию - "Почему кнопка есть, а на её нажатие реакции нет?" А вы в ответ высылаете ему вышеприведённый текст. Здорово!
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
Ну, в вопросе фразы "почему свойства нет задизейблить кнопку" не было. Теперь Вы подумали и более понятно сформулировали вопрос.
Штатного решения, насколько я знаю, нет. Через win api скорее всего можно, если игра стоит свеч.
У себя я при нажатии на кнопку минимизации не свертываю окно полностью, а перевожу его в дефолтное состояние.
Штатного решения, насколько я знаю, нет. Через win api скорее всего можно, если игра стоит свеч.
У себя я при нажатии на кнопку минимизации не свертываю окно полностью, а перевожу его в дефолтное состояние.
C6/C11, ШВС, tps/btrieve.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1397
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 9 раз
- Поблагодарили: 2 раза
- Контактная информация:
Загадка про размер окна
На форме Window behavior -> Use WINDOW Setting и поставить галку Save and Restore Window Location. От себя не добавляли, это штатная фишка ABC
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
Вот еще идея по поводу ресайза фрейма. На первый взгляд кажется несколько вычурной, но при внимательном рассмотрении рациональное зерно прослеживается.
Смысл в том, что фрейм не ресайзим, а в параметры пользователя закладываем несколько переключателей.
Применительно к своей ситуации.
По умолчанию работаем с максимизированным фреймом. Для мониторов 14-19 дюймов это оптимальный режим работы.
Для больших мониторов вводим градацию:
стандартный размер аля максимизированный фрейм на разрешении 800х600;
увеличенный размер аля максимизированный фрейм на разрешении 1024х768, можно при желании увеличить шрифт или включить правые панели;
широкий размер аля максимизированный фрейм на разрешении 1024х768 плюс запас справа, можно увеличить шрифт и включить правые панели.
Размеры для каждого случая вычисляются относительно якорного контрола на тулбаре.
При таком подходе все окна работают слаженно, без проблем с размещением и прочих прелестей обычного ресайза фрейма. Реализуется очень просто, можно прямо в шаблоны забить. Гамбит в ограничении свободы пользователей произвольно менять размеры фрейма.
Вот сижу и медитирую на монитор. Вроде как разумно, а вроде как и нестрандартное для винды поведение.
Смысл в том, что фрейм не ресайзим, а в параметры пользователя закладываем несколько переключателей.
Применительно к своей ситуации.
По умолчанию работаем с максимизированным фреймом. Для мониторов 14-19 дюймов это оптимальный режим работы.
Для больших мониторов вводим градацию:
стандартный размер аля максимизированный фрейм на разрешении 800х600;
увеличенный размер аля максимизированный фрейм на разрешении 1024х768, можно при желании увеличить шрифт или включить правые панели;
широкий размер аля максимизированный фрейм на разрешении 1024х768 плюс запас справа, можно увеличить шрифт и включить правые панели.
Размеры для каждого случая вычисляются относительно якорного контрола на тулбаре.
При таком подходе все окна работают слаженно, без проблем с размещением и прочих прелестей обычного ресайза фрейма. Реализуется очень просто, можно прямо в шаблоны забить. Гамбит в ограничении свободы пользователей произвольно менять размеры фрейма.
Вот сижу и медитирую на монитор. Вроде как разумно, а вроде как и нестрандартное для винды поведение.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7691
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 69 раз
Загадка про размер окна
Может быть конечно Игорь снова пропустил всю глубину дискуссии ...
Но ведь отмена иконки в окне делает неактивной кнопку минимизации.
Или я снова не про то что надо ?
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7691
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 69 раз
Загадка про размер окна
Попробуйте включить масштабирование рабочего стола Windows, юзеры это любят.
(извините, что разрушил технологическую идиллию).
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
У нас юзеры работают в основном в терминальном режиме. Там свое масштабирование используется. Меня на мысль навел собственный опыт. Я периодически подключаюсь к клиентам через radmin. И на некоторых компьютерах максимизированный фрейм получается сильно растянутым в ширину. Если я поставлю, например, вариант увеличенного или широкого фрейма, то размещу правые панели прямо под правую руку и мне будет комфортно. А шрифт выглядит вполне хорошим.
А какие еще варианты, чтобы и функционально, и кривизна из разных щелей не ползла? Я знаю, что Вы тоже в поиске.
А какие еще варианты, чтобы и функционально, и кривизна из разных щелей не ползла? Я знаю, что Вы тоже в поиске.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4899
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 44 раза
Загадка про размер окна
Игорь не учел, что, судя по всему, без иконки нельзя.Игорь Столяров писал(а): ↑31 Октябрь 2020, 19:41Может быть конечно Игорь снова пропустил всю глубину дискуссии ...
Но ведь отмена иконки в окне делает неактивной кнопку минимизации.
Или я снова не про то что надо ?
C6/C11, ШВС, tps/btrieve.