2012-08-10 4 views
1

Я создал приложение Delphi 7. Основная форма является ТГет объект с указанными ниже свойствами:Вопрос TForm с полосами прокрутки

BorderIcons: 
- biSystemMenu = True 
- biMinimize = True 
- biMaximize = False 
- biHelp = False 

BorderStyle = bsSizeable 

Position = poScreenCenter 

Event OnCanResize: Resize := FALSE; 

идеей является формой не может быть развернут и не может быть изменена, это все. Он отлично работает, но когда я запускаю определенные системы (Windows 7 и Windows XP), отображаются полосы прокрутки. Опять же, только в определенных системах.

Я думал, это потому, что разрешение экрана дисплея слишком мало, поэтому окно приложения обрезается. Но это не так. Приложение было отлично отображено в центре.

До сих пор я пытался применить многие приемы и советы из интернета:

OnFormShow:

if VertScrollBarVisible(MainForm.Handle) then 
    begin 
    MainForm.Constraints.MaxHeight := MainForm.Constraints.MaxHeight + 10; 
    MainForm.Constraints.MinHeight := MainForm.Constraints.MinHeight + 10; 
    MainForm.Height := MainForm.Height + 10; 
    end; 

    if HorzScrollBarVisible(MainForm.Handle) then 
    begin 
    MainForm.Constraints.MaxWidth := MainForm.Constraints.MaxWidth + 10; 
    MainForm.Constraints.MinWidth := MainForm.Constraints.MinWidth + 10; 
    MainForm.Width := MainForm.Width + 10; 
    end; 

И это фиксируется на некоторых системах ... но не все.

Это меня озадачивает.

У меня есть еще одна подсказка, чтобы установить TForm.Scaled: = FALSE и TForm.AutoScroll: = FALSE. Это фиксировало эти системы, НО нижняя часть формы была отрезана! ... немного.

Итак, теперь я спрашиваю ...

Являются ли эти параметры TFORM, как ширина, высота, сохраняются и хранятся где-то в системе ??? И ОС Windows заставляет приложение принимать это значение?

Поскольку в прошлом у моего приложения не было этой проблемы вообще. Но потом я изменил размер формы, добавил еще несколько gui, а затем проблема возникла. Теперь, я думаю, исходные свойства TForm где-то хранятся.

ответ

0

Границы в Windows> XP больше. Я не уверен, что делают Constraints, потому что я их не использовал. Пробовали ли вы использовать большее расстояние между вашими компонентами и правым/нижним концом формы?

EDIT: Некоторые компоненты имеют разные размеры по умолчанию для разных ОС.

EDIT 2: Ваша форма не должна изменяться, поэтому вы можете отключить калибровку с помощью BorderStyle: = bsSingle.

+0

['Ограничения'] (http://docwiki.embarcadero.com/Libraries/en/Vcl.Controls.TControl.Constraints) используются для ограничения ограничителя для элемента управления (где вы можете указать min. И максимальная ширина или высота). – TLama

+0

Да, я это испытал. Но меня это смущает. Не во всех XP и Windows 7 наблюдается одинаковое поведение. Приложение было использовано и протестировано на многих машинах, пока я нашел 1 XP и 1 Windows 7. Который я хочу узнать, почему. Пока не повезло. Я попытался изменить тему Windows на Classic, изменить разрешение экрана и т. Д. Не повезло. Я думал, что это может быть из предыдущей версии (с проблемой прокрутки), но я не сохраняю никаких настроек формы. – ewlung

+0

У вас есть машина XP с этой проблемой? - Странный. Угадайте: попробуйте сравнить значения DPI в настройках Windows. Следующая (и последняя) догадка: существует свойство, называемое PrintScale. Попробуйте изменить это. – rollstuhlfahrer

Смежные вопросы