Размеры формы при разных разрешениях экрана

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Размеры формы при разных разрешениях экрана

Сообщение Source » 14.11.2007 (Ср) 4:54

У меня при разработке установлены размеры формы больше необходимых для показа, т.к. присутствуют контролы, которые невидимы, и они лежат по периметру фрейма, который занимает всю область показа формы, т.е. размер формы подгоняется по размеру фрейма. BorderStyle формы = 1(Fixed Single) (а чем отличаются стили Fixed Single и Fixed Dialog?), StartUpPosition=CenterOwner, измеряется в твипах. При разрешении 1280x1024 всё работает чудесно, а при 800x600 проблемы - даже после Me.Move выдаются размеры формы не равные заказанным параметрам для Move. Значит, Me.Move не срабатывает для Fixed Single и Fixed Dialog? Почему же тогда при 1280x1024 всё работает? Вот код:
Код: Выделить всё
Private Sub Form_Load()
   
Dim MeHeight As Single, MeWidth As Single
     Frame1.Top=0
     Frame1.Left=0
     MeHeight = (Me.Height - Me.ScaleHeight)  + Frame1.Height
     MeWidth = (Me.Width - Me.ScaleWidth) +  Frame1.Width
Debug.Print Me.Width; Me.ScaleWidth; Me.Height; Me.ScaleHeight
     Me.Move 0, 0, MeWidth, MeHeight
Debug.Print Me.Width; MeWidth; Me.Height; MeHeight
End Sub

при изменении разрешения ScaleHeight и ScaleWidth меняются. Почему?
при 1280x1024 Debug.Print выдаёт:
13110 13020 9315 8940
11895 11895 8310 8310

при 800x600 Debug.Print выдаёт:
13110 12090 9315 8805
12180 12825 8445 8445
также Me.Top>0

Также интересно, что сперва у меня форма при 800x600 закрывала Панель задач, потом стала уходить под неё.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.11.2007 (Ср) 11:06

т.к. присутствуют контролы, которые невидимы, и они лежат по периметру фрейма, который занимает всю область показа формы


Фу :!: Устрани этот момент.

(а чем отличаются стили Fixed Single и Fixed Dialog?)

Fixed Single - это рабочее окно, в то время как Fixed Dialog как ясно из названия сгодится только для диалога.

Fixed Single может быть свёрнут и развёрнут на всю рабочую область (для этого есть свойства MinButton / MaxButton).

У Fixed Dialog-а этих кнопок не может быть. Зато у него может быть кнопка ShowWhatThis ( вопросительный знак рядом с кнопкой [ X ] ).

У Fixed Dialog-а может вообще не быть иконки (выледяешь свойства Icon и жмёшь Delete).

У Fixed Signle же иконка быть должна всегда, поэтому если её удалить, будет отображаться стандартная системная.


На неXP-системах также наблюдается разница в толщине рамки окна.

при изменении разрешения ScaleHeight и ScaleWidth меняются.

Видимо потому, что форма урезается до размеров WORKAREA ?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 14.11.2007 (Ср) 11:27

при изменении разрешения ScaleHeight и ScaleWidth меняются.

Видимо потому, что форма урезается до размеров WORKAREA ?


Нет, стиль Fixed не урезается, а если бы так, менялись бы Height и Width. Не пойму, почему метод Move не срабатывает?

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 14.11.2007 (Ср) 23:50

вот пример
Вложения
ChangeScaleHeight.zip
(1.67 Кб) Скачиваний: 52


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59

    TopList