Приветствую всех подданных Королевства.
Недавно столкнулся с проблемой Form.Scaled. На некоторых машинах у нас в классе, где стоит Windows 2000 и отсутствуют права администратора (как следствие, отсутствует закладка Параметры в Свойствах Экрана и возможность изменить разрешение экрана). На этих машинах во всех моих проектах компоненты были разбросаны по форме чёрти как и отсутствовала пропорциональность в масштабах. При установке Form1.Scaled := False всё становилось на места. Это что же получается, во всех проектах нужно автоматически выключать это свойство?
ВОПРОС: Как сэмулировать эту ситуацию у себя на домашнем компе (WindowsXP)?
Другой вопрос: Кто-нибудь знает, а если формочка написана на чистом WinAPI, там всё нормально будет или нет (не имею возможности больше проверить)? Если нет, то что соответствует этому Scaled в WinAPI и как это там лечить?
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
Со свойствами Align, Anchors и AutoSize я работать умею (даже свои написал - AnchorsPropor - пропорциональное смещение от края и т.д.), но в таких случаях они ещё больше добавляют путаницы.
Остаётся только удивляться, почему Form.Scaled не выключено по умолчанию.
Спасибо, понял. Только вот препам нашим всё это до лампочки, им C++ под Линухой подавай! :-)
Попробовал я изменить у себя дома масштаб - очень похоже, но таких глюков почему-то не наблюдается.
Кстати, в кабинетах ВЦ на тех же машинах был замечен ещё один глюк: в зависимости от стиля кромки формы в ресурс формы сохраняется либо Width, Height, либо ClientWidth, ClientHeight. Так вот, с Width опять проблемы, но при замене вручную в *.dfm на ClientWidth всё становится на места. Аналогично и с Height.
Т.е. если я на WinAPI создаю кнопочки функциями CreateWindowEx, то у меня в любом случае везде всё будет нормально?
Это что же получается, во всех проектах нужно автоматически выключать это свойство? В общем случае получается, что нужно научиться работать со свойствами Align, Anchors, AutoScroll, Autosize. А в частном случае, чтобы по-быстрее отвязаться от препода, можно конечно воспользоваться Scaled.
Недавно столкнулся с проблемой Form.Scaled.
Эта тема мусолится уже много лет, воспользуйтесь поиском.
Это что же получается, во всех проектах нужно автоматически выключать это свойство?
Ну в общем да.
Как сэмулировать эту ситуацию у себя на домашнем компе (WindowsXP)?
Свойство экрана/Параметры/Дополнительно/Масштаб. Там должны быть "Крупный размер (120dpi)" и "Обычный размер (96dpi)", надо изменить на противоположный и перегрузиться.
Кто-нибудь знает, а если формочка написана на чистом WinAPI, там всё нормально будет или нет (не имею возможности больше проверить)?
Смотря как напишите: если вручную создавать элементы, то их координаты будут в пикселях, а если использовать диалоги из ресурсов, то там координаты в неких юнитах меняющихся в зависимости от разрешения (не экранного, а шрифтов, о котором написано выше).
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.