Avatar billede sion Nybegynder
25. juli 2002 - 02:48 Der er 8 kommentarer og
1 løsning

Min. højde og brede ved sizeable

Hvordan gør man sådan at en sizeable form ikke kan blive mindre end en bestemt højde og brede?
-Sion
Avatar billede sion Nybegynder
25. juli 2002 - 02:49 #1
...når man resizer den
Avatar billede euroman28 Nybegynder
25. juli 2002 - 07:50 #2
Jeg har ikke lige VB foran mig så jeg husker ikke helt nøjagtigt hvad den Sub der kaldes når man resizer hedder, men jeg gør det sådan:

Private Sub Form1_Resize()
  If Form1.Width < 500 then Form1.Width = 500
End Sub
Avatar billede ulrina Nybegynder
25. juli 2002 - 07:53 #3
Private Sub Form_Resize()
    If Me.Height < MinHøjde Then Me.Height = MinHøjde
    If Me.Width < MinBrede Then Me.Width = MinBrede
End Sub
Avatar billede sion Nybegynder
26. juli 2002 - 00:22 #4
euroman28 & ulrina ---> Duer ikke! Jeg kikker efter en funktion der gør at når formen bliver under en hvis højde og brede kan man simpelthen ikke gøre den midre - som om den ikke var sizable. Den kode I begge har foreslået gør at formen flakker og flimre og i øvrigt godt kan blive mindre end man sætter 'MinHøjde' og 'MinBredde' til... Håber I forstår hvad jeg mener
Avatar billede euroman28 Nybegynder
26. juli 2002 - 00:46 #5
egentlig ikke, jeg bruger den metode ofte og det virker fint her.
Avatar billede kantoraza Nybegynder
26. juli 2002 - 11:15 #6
Same her.
Avatar billede andymax Nybegynder
17. august 2002 - 03:51 #7
Der er vist kun ét rigtigt svar! ;o)

'Add to Form
Private Sub Form_Load()
    Call StartResize(Me)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call StopResize(Me)
End Sub


'Add to Module
Private Const GWL_WNDPROC As Long = -4
Private Const WM_GETMINMAXINFO As Long = &H24
Private Const SM_CXFULLSCREEN As Long = 16
Private Const SM_CYFULLSCREEN As Long = 17
Private Const SM_CYCAPTION As Long = 4

Type POINTAPI
    x As Long
    y As Long
End Type

Type MINMAXINFO
    ptReserved As POINTAPI
    ptMaxSize As POINTAPI
    ptMaxPosition As POINTAPI
    ptMinTrackSize As POINTAPI
    ptMaxTrackSize As POINTAPI
End Type

Private mlngOldWindowProc&

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Function SubClass1_WndMessage(ByVal hWnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
    If Msg = WM_GETMINMAXINFO Then

        Dim MinMax As MINMAXINFO
       
        Call CopyMemory(MinMax, ByVal lp, Len(MinMax))
       
        MinMax.ptMinTrackSize.x = 8295 \ Screen.TwipsPerPixelX
        MinMax.ptMinTrackSize.y = 7815 \ Screen.TwipsPerPixelY
        MinMax.ptMaxTrackSize.x = GetSystemMetrics(SM_CXFULLSCREEN)
        MinMax.ptMaxTrackSize.y = GetSystemMetrics(SM_CYFULLSCREEN) + GetSystemMetrics(SM_CYCAPTION)
       
        Call CopyMemory(ByVal lp, MinMax, Len(MinMax))
       
        SubClass1_WndMessage = 1
        Exit Function
    End If
       
    SubClass1_WndMessage = CallWindowProc(mlngOldWindowProc, hWnd, Msg, wp, lp)
End Function


Public Sub StartResize(ByVal Form As Form)
    mlngOldWindowProc& = GetWindowLong&(Form.hWnd, GWL_WNDPROC)
    Call SetWindowLong&(Form.hWnd&, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
End Sub

Public Sub StopResize(ByVal Form As Form)
    Call SetWindowLong&(Form.hWnd&, GWL_WNDPROC, mlngOldWindowProc&)
End Sub
Avatar billede sion Nybegynder
17. august 2002 - 15:24 #8
andymax -> Lige og helt nøjagtigt det jeg var på udkik efter! Mange tak, der er en potion points på vej til dig...
Avatar billede andymax Nybegynder
19. august 2002 - 01:11 #9
Super! ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester