Здравствуйте.
Столкнулся с такой проблемой. Как-то показывал сделанную программу на Delphi 7. Разрабатывая её на 17" мониторе. А у начальства 19". т.е. у него программа не на все окно.
Вопрос в том, как развернуть его на все окно, но не так, чтобы форма на все окно, а так чтобы и компоненты тоже разъехались. Grid,Panel и т.д
И если вдруг на 15" запустят,чтобы они норм встала на тот монитор.
Подскажите выход или хоть куда копать то.
Спасибо.
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
01-11-2007 23:34
Если физические размеры видимой облести экрана соотносятся как 3:4, то и логичесике размеры должны соотноситься как 3:4. Если же это не так, то либо AspectRatio не равен единице, либо ширина зерна не равна его высоте. Либо все же физические размеры не 3:4.
Никогда особенно не задавался вопросом о соотношении сторон, а тут, понимаешь, назвался груздем... Пришлось разбираться...
Почему для всех LCD-мониторов нормальным разрешением является 1280:1024, то есть размеры соотносятся как 4:5 для меня загадка. Прям хоть бери линейку и замеряй физичесике размеры.
Товарищь Гугль говорит, что 5:4 является тоже вполне "стандартным" соотношением. Также называются 16:10, 16:9 и еще несколько. Так что можно не беспокоиться - пиксел остался квадратным... Не буду приводить ссылок, но я задавал поиск по строке "мониторы список стандартные соотношения сторон 4:3 5:4 16:9". Думаю, результаты выполнения запроса не будут сильно отличаться... Все, кто интересуется мониторами, думаю, смогут найти что-то интересное для себя...
01-11-2007 19:16 | Комментарий к предыдущим ответам
Прям хоть бери линейку и замеряй физичесике размеры.
Можно не мучаться: за редчайшим исключением пиксели квадратные, так что физическое соотношение сторон совпадает с логическим. Если нужно соотношение 4:3 и размер больше чем 1024х768, то надо брать что-то типа 1400x1050. Вот по этой картинке http://en.wikipedia.org/wiki/Image:Vector_Video_Standards2.png видно что 5:4 это скорее исключение чем правило. Если не ошибаюсь причина в видео памяти: такое число пикселей влезало в видеокарты тех времён, а чуть большее (например 1400х1050) уже нет.
Ноуты жаль стали поголовно 16:9(10) делать... фильмы конечно неплохо смотрятся, но вот всё остальное...
01-11-2007 18:04 | Комментарий к предыдущим ответам
to Бел Амор:
Респект за дружескую птктровку. Но один момент я бы хотел уточнить уже без шуток.
Если физические размеры видимой облести экрана соотносятся как 3:4, то и логичесике размеры должны соотноситься как 3:4. Если же это не так, то либо AspectRatio не равен единице, либо ширина зерна не равна его высоте. Либо все же физические размеры не 3:4.
Почему для всех LCD-мониторов нормальным разрешением является 1280:1024, то есть размеры соотносятся как 4:5 для меня загадка. Прям хоть бери линейку и замеряй физичесике размеры.
То, что в килобайте не тысяча байт, здесь явео непричем ;-)
01-11-2007 16:35 | Комментарий к предыдущим ответам
>>> 10 лет работаю на 17-дюймовом ViewSonic в разрешении 1024х768 и дико доволен.
Могу только порадоваться вашим финансовым возможностям в те времена. Надеюсь, они изменялись только в лучшую сторону...
>>> Так что это все дело вкуса.
Скорее согласен, нежели наоборот...
*пытается разделить 1024 на 3, но почему-то ничего не получается. Плюнул, запустил калькулятор и подсчитал, что 1024/1280 = 0.8, а вовсе не 3/4. "Это ж-ж-ж-ж неспроста"
Сэр... Но ведь и килобайт - это не тысяча байт... :)
>>> >>> Естественно, речь идет об LCD - мониторах...
>>> Успел, редиска :-D
01-11-2007 14:37 | Комментарий к предыдущим ответам
to Бел Амор:
10 лет работаю на 17-дюймовом ViewSonic в разрешении 1024х768 и дико доволен. Так что это все дело вкуса.
>>> Если говорить о мониторах с классическим соотношением сторон (3:4), то родное разрешение мониторов 17" и 19" - одинаковое: 1280x1024.
*пытается разделить 1024 на 3, но почему-то ничего не получается. Плюнул, запустил калькулятор и подсчитал, что 1024/1280 = 0.8, а вовсе не 3/4. "Это ж-ж-ж-ж неспроста"
Жаль, что никто не обратил внимания на один факт. Если говорить о мониторах с классическим соотношением сторон (3:4), то родное разрешение мониторов 17" и 19" - одинаковое: 1280x1024. И если на экране вашего шефа окна занимают меньше места, чем у вас, то это значит, что вы работаете не на родном разрешении монитора, а на более низком, быстрее всего 1024x768. А вот это вызывает искреннее сочувствие, ибо происходит размытие изображения, что очень неприятно для глаз. Лично я предпочел бы работать с этим разрешением на 15", т.к. это родное разрешение для него. Вообще считаю 17" мониторы неким недоразумением, т.к. размер пикселя у 15" и 19" примерно одинаков и вполне комфортен для работы на родном разрешении, а у 17" - заметно меньше, что вынуждает работать либо на неродном разрешении с размытием, либо на родном, но с мелкими буквами.
Теперь что касается "раздвигания"... Раздвигать имеет смысл только те окна, на которых имеются элементы вроде грида, мемо и т.п. Зачем раздвигать диалоговые окна, в которых только эдиты и кнопки?
Чаще всего в окне, которое предполагается раздвигать, имеется один, "основной" элемент вроде грида и несколько кнопок. Допустим, имеется форма с гридом, тремя кнопками редактирования справа и кнопкой OK в правом нижнем углу. Тогда имеет смысл назначить Anchors грида на все четыре стороны, кнопок редактирования - верх и право, кнопки OK - низ и право. И при открытии развернуть форму на весь экран. При этих настройках грид будет раздвигаться, сохраняя одинаковое расстояние до границ формы по всем сторонам, кнопки редактирования будут сдвигаться , сохраняя свое положение относительно верхнего правого угла, а кнопка OK - относительно нижнего правого. Чтобы форму нельзя было уменьшить слишким сильно, когда элементы начнут наезжать друг на друга, можно проставить для формы Constraints на уменьшение по текущим размерам формы (которые заданы при разработке) и только потом разворачивать.
Зато если разобраться саомстоятельно с хелпом, то надольше остается ;-)
Согласен. Так и есть.
Только каждому свое :) Кто-то любит сидеть и искать. А кто-то может спросить и узнать помимо своего вопроса, ряд возможных проблем.
Это сообщение тоже носит общий характер :))
to Космач:
Давайте все же различать такие моменты, как:
1. Абстрактный спор о такой характерситиске ресурса, как "посещаемость".
2. Сравнительное обсуждение поиска в хелпе и задавания вопросов на КС.
Иначе получается белиберда. Мой предыдущий ответ относился исключительно к первому пункту. По моим наблюдениям, рейтинги по посещаемости, цитируемости и т.п. приводят к тому, что владельцы ресурсво больше внимания уделяют раскрутке, а не наполнению. Соответственно, "самый посещаемый ресурс" -- это не то же самое, что "самый лучший ресурс".
По пункту второму, если Вам интересно.
>>> <...> быстрее доходит нежели читать help
Зато если разобраться саомстоятельно с хелпом, то надольше остается ;-)
>>> Есть кайф ответь, помоги, чем можешь
Дык я так и делаю. Но вот только довольно зачастую ответ состоит в копировании текста из хелпа (или рекомендации прочитать хелп по определнной функции/методу/свойству если копировать лень). Просто потому, что лучше, чем написано в хелпе, объяснить не получится. Вот и думаешь, а зачем автор задавал вопрос, если он мог получить нужную информацию намного быстрее, просто прочитав хелп?
Я ведь не заставляю тут никого отвечать.
Есть кайф ответь, помоги, чем можешь - даже если для тебя это пустяковый вопрос или вообще не вопрос. Не все такие профи, как вы уважаемый Geo.
А когда мне ответят тут, да ещё и с примером, быстрее доходит нежели читать help. Я не говорю, что я им вообще не пользуюсь, но все же мне проще найти ответ тут.
Когда спрашиваешь - то обучаешься.
А разве посещаемость -- это важный критерий? Если да, то можно резко повысить посещаемость, размещая на сайте материалы эротического характера. Но зачем такая посещаемость нужна?
Не надо переворачивать с ног на голову. Я имел ввиду посещаемость по направленности сайта. Т.е. из сайтов такой тематики DK один из известных.
>>> если бы все читали справку, то у сайта не было бы такой посещаемости))))
А разве посещаемость -- это важный критерий? Если да, то можно резко повысить посещаемость, размещая на сайте материалы эротического характера. Но зачем такая посещаемость нужна?
Есть много интересных вопросов программирования, ответов на которые нет в хелпе. Вот их и интересно обсуждать.
И еще: проблема не в физическом размере экрана, а в его разрешении: если установить одинаковое разрешение у 15" и 19" мониторов, окно займет одинаковую часть экрана. Это, конечно не выход - просто для более точной формулировки вопроса.
Для проверки решений не обязательно бегать от компьютера к компьютеру, можно просто менять разрешение монитора в определенных пределах и смотреть на результат.
Только не могу понять алгоритм его LEFT TOP RIGHT BOTTOM
Как насчет того, чтобы справку почитать?
Выставленный якорь означает, что при изменении размеров формы контроль будет сохранять расстояние по указанному направлению (left, top, right, bottom) до края своего родителя. Сделайте тестовое приложение и разбирайтесь на нем сколько угодно ;-)
У Вас неверное понимание того, как нужно использовать Align. Если Вы хотите воспользоваться этим механизмом, то свойство Align должно быть выставлено у ВСЕХ контолов, принадлежащих одному родителю (parent). Иначе это не имеет смысла.
Пример. Бросаете на форму 4 панели. Первой задаете alTop. Это будет область панели инструментов. Второй -- alBottom. Это будет область статуса. Третьей -- alLeft. Область параметров. Четвертой -- alClient. Это рабочая область. При любом изменении размеров формы панели переразмещаются автоматически, чтобы заполнить всю клиентскую область.
Теперь на верхнюю панель (а не на форму) кидаем несколько панелей с заданным alLeft. На этих панелях размещаем кнопки. Получаем тулбары в нужных количествах. На левую панель кидаем группы параметров с alTop, чтобы они выравнивались по верхнему краю. Ну, и так далее. Смысл именно в том, что происходит постоянное разбиение родителя на области, а каждая область, в совю очередь, снова разбивается на области. Примерно так же, как используются таблицы в HTML (вложенные друг в друга) для создания сложной структуры HTML-страницы.
Проблема не в размерах мониторов, а в настройке размеров форм. Т.е. при разработке надо делать BorderStyle=bsSizeable и добиваться того, чтобы форма при любом растягивании/сжатии выглядела хорошо.
Если не использовать якоря, то проще всего замостить всю форму панелями и контроли выкладывать уже на них. Тогда у каждой панели должно быть Align не равное alNone (и alCustom).
Да используя Anchors что-то похожее уже получается. Только не могу понять алгоритм его LEFT TOP RIGHT BOTTOM. Перевел)) проде как Anchors - якоря. А как это понять?
И ещё как использовать сплиттер, чтобы он двигался. а то кинул его а он не может двигаться. Хотя курсор меняется.Т.е. как с ним работать.
Огромное спасибо, что помогаете.
Вовсе не обязательно, чтобы форма занимала весь экран.
Полностью с вами согласен. Только, как говорится начальству виднее. Мне сказали следующие: "Зачем мы тогда тратим деньги на мониторы большие, давайте купим все 15" и будем работать"
Обычно ставлю: BorderStyle=bsSingle
Для контролов Align не использую. Т.е. получается, я должен кодом указывать, куда компонент ставить, если окно работает на 15" и 17"??
И ещё вот у Panel есть сво-во ALIGN (alBottom, alClient,alCustom,alLeft,alNone,alRight,alTop).
Так вот. Все понятно, влево, вправо. Вот клиент, вроде работает норм. Расстягивается, а если надо две PANEL, то один накладывается на второй. Возможно это обойти?
Я так понял, это гемор(((
Может проще попробывать отмазаться)))
Спасибо.
31-10-2007 05:06 | Комментарий к предыдущим ответам
Вообще-то (в качестве дополнения), этой же цели у любого контрола служит свойство Anchors. Логично использовать различные сплиттеры между смежными панелями...
А Вы вообще как форму проектируете? Допускаете изменение ее размеров? Используете для контролов, например, свойство Align?
Если да, то выводите форму Maximaize. Если нет, то это нужно сделать.
Если у Вас не получается использовать Align (например, есть толкьо кнопки которым в зависимости от размеров области нужно менять положение и/или размеры), то пересчитывайте все вручную, ориентируясь на ClientWidth и ClientHeight формы.
Если же у вас форма, в которой размеры тщательно подогнаны и менять их не хочется, то делайте размеры формы неизменными. Вовсе не обязательно, чтобы форма занимала весь экран.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.