Большая форма

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
remix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 17.10.2004 (Вс) 19:14
Откуда: Туапсе

Большая форма

Сообщение remix » 02.11.2004 (Вт) 22:56

В программе получается большая форма.

вернее для 1280x1024 нормальная, а для 800x600 огромная

можно ли изменить масштаб формы и соответственно всех элементов
управления, чтобы на 800x600 было все видно.

И нельзя ли масштабировать форму в зависимости от разрешения.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 02.11.2004 (Вт) 23:36

Проверяй какое на данный момент разрешение а уж патом масштабируй
Код: Выделить всё
В модуль

Declare Function EnumDisplaySettings Lib "user32" Alias _
                "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
                                        ByVal iModeNum As Long, _
                                        lptypDevMode As Any) As Boolean

Declare Function ChangeDisplaySettings Lib "user32" Alias _
                "ChangeDisplaySettingsA" (lptypDevMode As Any, _
                                          ByVal dwFlags As Long) As Long

Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_BITSPERPEL = &H40000
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1
Public Const DM_DISPLAYFREQUENCY = &H400000
Public Const ENUM_CURRENT_SETTINGS = -1

Public Type typDevMODE
    dmDeviceName       As String * CCDEVICENAME
    dmSpecVersion      As Integer
    dmDriverVersion    As Integer
    dmSize             As Integer
    dmDriverExtra      As Integer
    dmFields           As Long
    dmOrientation      As Integer
    dmPaperSize        As Integer
    dmPaperLength      As Integer
    dmPaperWidth       As Integer
    dmScale            As Integer
    dmCopies           As Integer
    dmDefaultSource    As Integer
    dmPrintQuality     As Integer
    dmColor            As Integer
    dmDuplex           As Integer
    dmYResolution      As Integer
    dmTTOption         As Integer
    dmCollate          As Integer
    dmFormName         As String * CCFORMNAME
    dmUnusedPadding    As Integer
    dmBitsPerPel       As Integer
    dmPelsWidth        As Long
    dmPelsHeight       As Long
    dmDisplayFlags     As Long
    dmDisplayFrequency As Long
End Type

В форму

Dim X, Y As Long
    Dim typDevM As typDevMODE
    EnumDisplaySettings 0, ENUM_CURRENT_SETTINGS, typDevM
    X = typDevM.dmPelsWidth
    Y = typDevM.dmPelsHeight
Text1.Text = X & "x" & Y


А патом по текстбоксу проверяй и масштабируй !
:wink:
Max!

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 02.11.2004 (Вт) 23:42

Юзай объект Screen для определения текущего разрешения экрана, а дальше - соответсвенно изменяй .Width .Height .Left и .Top. Можешь это темное дело проворачивать в Form_Load или (в особенности, если у тебя форма максимизирована) Form_Resize.
Листинги не горят!

remix
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 17.10.2004 (Вс) 19:14
Откуда: Туапсе

Сообщение remix » 03.11.2004 (Ср) 23:31

так а масштабировать конкретно как, форму я допустим изменяю
а рисунок то надо масштабировать, а то он весь не виден получается.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 04.11.2004 (Чт) 1:00

remix писал(а):так а масштабировать конкретно как, форму я допустим изменяю
а рисунок то надо масштабировать, а то он весь не виден получается.

Масштабирование рисунков - это отдельная тема, неоднократно упоминавшаяся на форуме. Поиск по ключевым словам PaintPicture и StretchBlt Вам поможет.
Листинги не горят!

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 04.11.2004 (Чт) 1:05

Размер картинки можно ещё так
Код: Выделить всё
Dim Pictr As StdPicture
Set Pictr = LoadPicture("C:\Picture.bmp")
Call Form1.PaintPicture(Pictr, 100, 200)


:wink:
Max!


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

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

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

    TopList  
cron