Размер формы в зависимости от размера монитора

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

Размер формы в зависимости от размера монитора

Сообщение Алексей К. » 15.09.2004 (Ср) 13:32

У меня форма изначально задана по размерам большая в конфигураторе (17" 1024х768 - стоит разрешение) и вся забита под завязку всякими элементами управления.
Вопрос: Как будет выглядеть форма при запуске на мониторах меньшего размера (например 14"), появятся ли на ней автоматически полосы прокрутки? Если нет, то как быть - что бы могли пользоваться другие пользователи на машинах с мал. мониторами?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.09.2004 (Ср) 13:34

А нельзя сделать форму в 640x480, а элементы раскидать по закладкам? Потому что на меньшем разрешении это будет выглядеть отвратительно.
Lasciate ogni speranza, voi ch'entrate.

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 15.09.2004 (Ср) 13:53

Есть подозрение, что на компьютерах с разрешением экрана 640x480 стоят столь мощные процессоры, что не всякая прога запустится. :)
Уж лучше - 800x600 и стоит подумать про динамическое изменение размера текста и размеров и положения ЭУ в зависимости от размера формы, а не экрана.

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

про размеры формы

Сообщение Akella » 15.09.2004 (Ср) 14:38

:wink: Чтобы привежи объекты к размеру формы. Это можно сделать в свойстве RESIZE()
Не бойся что не знаешь, бойся что не учишься.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.09.2004 (Ср) 14:54

Кстати, у меня на работе старый монитор, который больше чем 800х600 не тянет, и мне прекрасно видны уродливо сделанные сайты, которые постоянно приходится прокручивать по горизонтали, чтобы что-то прочитать. Их на удивление много, и увы, MSDN Library - один из них... :-(
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4160
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 15.09.2004 (Ср) 16:44

Алексей К.
Еще попробуй в свойствах экрана поставить "крупный шрифт"... и ужаснись. А приходится иметь ввиду, что у некоторых пользователей эта опция включена.

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 15.09.2004 (Ср) 17:04

Ну что-то вроде этого:

Код: Выделить всё
GetVideoMode SWidth, SHeight, SDepth
If SWidth < 800 Or SHeight < 600 Then
    MsgBox "Для запуска программы желательно установить разрешение экрана 1024x768 (800x600)", vbCritical, "Внимание!"
    'Form_Unload (0)
    Exit Sub

ElseIf SWidth < 1024 And SHeight < 768 Then
    ResX = 1024 / SWidth
    ResY = 768 / SHeight
   
    Me.Width = Me.Width / ResX
    Me.Height = Me.Height / ResY
       
    For Each cContr In Me.Controls
        If cContr.Name <> "" Then

        If (TypeOf cContr Is TextBox) Or _
            (TypeOf cContr Is Label) Or _
            (TypeOf cContr Is CommandButton) Then
                cContr.Width = cContr.Width / ResX
                cContr.Height = cContr.Height / ResY
                cContr.Top = cContr.Top / ResY
                cContr.Left = cContr.Left / ResX
                cContr.FontName = "Times New Roman"
                cContr.FontSize = cContr.FontSize / ResX
                End If
       
        If (TypeOf cContr Is ComboBox) Or _
            (TypeOf cContr Is CheckBox) Then
                cContr.Width = cContr.Width / ResX
                cContr.Top = cContr.Top / ResY
                cContr.Left = cContr.Left / ResX
                cContr.FontName = "Times New Roman"
                cContr.FontSize = cContr.FontSize / ResX
                End If
               
        If (TypeOf cContr Is Line) Then
            cContr.X1 = cContr.X1 / ResX
            cContr.X2 = cContr.X2 / ResX
            cContr.Y1 = cContr.Y1 / ResY
            cContr.Y2 = cContr.Y2 / ResY
            End If
           
        End If
    Next cContr
   
ElseIf SWidth > 1024 And SHeight > 768 Then
    ResX = SWidth / 1024 / 1.25
    ResY = SHeight / 768 / 1.47
   
    'Me.Width = Me.Width / ResX
    'Me.Height = Me.Height / ResY
       
    For Each cContr In Me.Controls
        If cContr.Name <> "" Then

        If (TypeOf cContr Is TextBox) Or _
            (TypeOf cContr Is Label) Or _
            (TypeOf cContr Is CommandButton) Then
                cContr.Width = cContr.Width / ResX
                cContr.Height = cContr.Height / ResY
                cContr.Top = cContr.Top / ResY
                cContr.Left = cContr.Left / ResX
                cContr.FontName = "Times New Roman"
                cContr.FontSize = 10 'cContr.FontSize / ResX / 1.5
                End If
       
        If (TypeOf cContr Is ComboBox) Or _
            (TypeOf cContr Is CheckBox) Then
                cContr.Width = cContr.Width / ResX
                cContr.Top = cContr.Top / ResY
                cContr.Left = cContr.Left / ResX
                cContr.FontName = "Times New Roman"
                cContr.FontSize = 10 'cContr.FontSize / ResX
                End If
               
        If (TypeOf cContr Is Line) Then
            cContr.X1 = cContr.X1 / ResX
            cContr.X2 = cContr.X2 / ResX
            cContr.Y1 = cContr.Y1 / ResY
            cContr.Y2 = cContr.Y2 / ResY
            End If
           
        End If
    Next cContr
   
End If


Код, может быть несовершенен, но работает. :-)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.09.2004 (Ср) 20:04

Mikle писал(а):Алексей К.
Еще попробуй в свойствах экрана поставить "крупный шрифт"... и ужаснись. А приходится иметь ввиду, что у некоторых пользователей эта опция включена.

Вот-вот - и бороться с этим ой как тяжело (по крайней мере трудоёмко).
Кроме как вручную подгонять в ресайзе положение контролов больше нет других методов?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.09.2004 (Чт) 11:21

В VB6 - нет. В NET'е, кажется, есть. Но на самом деле этот режим крупных шрифтов - самая большая подстава для программера клиентской части. Ее обходить сложнее всего, хотя в списке требований на логотип Designed for Windows ??? этот пункт стоит на третьем месте (от простого к сложному), при том, что всего их там 7...


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

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

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

    TopList