Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: E N T E R en Abril 25, 2012, 03:45:50 pm

Título: Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: E N T E R en Abril 25, 2012, 03:45:50 pm
Sí, asi como dice el titulo hay una manera de hacer esto de bloquear el tamaño del formulario cuando llegue a un tamaño especifico. Yo logro hacer así pero queda un parpadeo en el form como que sigue achicando. He visto que algunos programas como CCleaner cuando llega a un tamaño no tiene ese parpadeo, es muy poca cosa pero es por estética que quiero resolver esto.

Este es mi código.

Código: (VB) [Seleccionar]
Private Sub Form_Resize()
   
    If Me.WindowState = 1 Then
        'No hacer nada si se minimiza.
    ElseIf Me.Width <= 12000 Then
        Me.Width = 12050
    ElseIf Me.Height <= 9650 Then
        Me.Height = 9700
    Else
   
        picCentral.Left = Me.ScaleWidth - picCentral.Width - 100
        FrameF.Left = Me.ScaleWidth - FrameF.Width - 100
        FrameTitulos.Width = Me.ScaleWidth - 200
        LVentas.Width = Me.ScaleWidth - 2880
        LVentas.Height = Me.ScaleHeight - LVentas.Top - 2200
        LVentas.ColumnHeaders(2).Width = LVentas.Width - 6710
   
     End If
     
End Sub


Saludos....
Título: Re:Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: raul338 en Abril 25, 2012, 08:58:55 pm
Solo tienes que tratar el mensaje WM_GETMINMAXINFO y con el cSubClass lo podes manejar muy facilmente
Título: Re:Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: 79137913 en Abril 26, 2012, 08:10:47 am
HOLA!!!

Ese codigo tiene 2 cosas mal a mi parecer...
Código: (vb) [Seleccionar]
   ElseIf Me.Width <= 12000 Then
        Me.Width = 12050
    ElseIf Me.Height <= 9650 Then
        Me.Height = 9700

Aca al modificar el width y el height haces que se vuelva a llamar al evento Form_Resize()

Y como lo estableces en un numero mayor al que establece tu condicion vuelve a modificarlos. deberias ponerle.
Código: (vb) [Seleccionar]
   ElseIf Me.Width < 12050 Then
        Me.Width = 12050
    ElseIf Me.Height < 9700 Then
        Me.Height = 9700

De esta manera cuando se ejecuten esas instrucciones y vuelva al evento resize no volvera a modificarlos.

GRACIAS POR LEER!!!
Título: Re:Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: cobein en Abril 26, 2012, 09:51:55 am
Hola, aca dejo la clase que uso normalmente, es un poco grande pero a mi me resulta practica.

http://www.2shared.com/file/_zAtv_i1/sizerestriction.html
Título: Re:Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: E N T E R en Abril 26, 2012, 12:32:34 pm
Espectacular Cobein, pero no hay una manera de bloquear solo el mínimo.
Título: Re:Bloquear tamaño Form cuando llegue a un tamaño especifico
Publicado por: cobein en Abril 26, 2012, 12:38:23 pm
si, los parametros son opcionales, podes pasar solo los 2 primeros para el minimo Call f_cMinSize.RestrictSize(Me.hwnd, 600, 400)