[Ayuda] Form

Iniciado por jorgelin95, 18 Septiembre 2010, 20:27 PM

0 Miembros y 1 Visitante están viendo este tema.

jorgelin95

Cómo hago para que el Form no se puede modificar el tamaño, es decir que no se expansible Gracias

raul338

Cambia el BorderStyle por Fixed Dialog

Elemental Code

ahora si necesitas que sea maximizable pero que no lo puedas cambiar de tamaño
en el evento Form rezise pones algo asi

Código (vb) [Seleccionar]
on error resume next
me.height = X
me.width = Y


X e Y son el alto y ancho respectivamente

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Dessa

En Diseño es como te dice raul y si necesitas cambiar en ejecución se puede usar SetWindowLong (sirve tambien para formularios sin borde)


Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Sub Form_Load()
  Command1.Caption = "FIXED"
  Command2.Caption = "SIZEABLE"
End Sub

Private Sub Command1_Click()
  Call SetWindowLong(Me.hwnd, &HFFF0, GetWindowLong(Me.hwnd, &HFFF0) And Not &H40000)
  Call SetWindowPos(Me.hwnd, &H0, &H0, &H0, &H0, &H0, &H20 Or &H2 Or &H4 Or &H1)
End Sub

Private Sub Command2_Click()
  Call SetWindowLong(Me.hwnd, &HFFF0, GetWindowLong(Me.hwnd, &HFFF0) Or &H40000)
  Call SetWindowPos(Me.hwnd, &H0, &H0, &H0, &H0, &H0, &H20 Or &H2 Or &H4 Or &H1)
End Sub





Adrian Desanti

Psyke1

Dessa porque no utilizas constantes?
Creo que quedaria mas claro :P

DoEvents! :P

Dessa

Ahí va con constantes, Psyke.



Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000
Private Const WS_SIZEBOX = &H40000

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOSIZE = &H1

Private Const SWP_REFRESH = SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_FRAMECHANGED

Private Sub Form_Load()
  Command1.Caption = "FIXED"
  Command2.Caption = "SIZEABLE"
End Sub

Private Sub Command1_Click()
  Dim lngstylo As Long
  lngstylo = GetWindowLong(Me.hwnd, GWL_STYLE) And Not WS_SIZEBOX
  Call SetWindowLong(Me.hwnd, GWL_STYLE, lngstylo)
  Call SetWindowPos(Me.hwnd, &H0, &H0, &H0, &H0, &H0, SWP_REFRESH)
End Sub

Private Sub Command2_Click()
  Dim lngstylo As Long
  lngstylo = GetWindowLong(Me.hwnd, GWL_STYLE) Or WS_SIZEBOX
  Call SetWindowLong(Me.hwnd, GWL_STYLE, lngstylo)
  Call SetWindowPos(Me.hwnd, &H0, &H0, &H0, &H0, &H0, SWP_REFRESH)
End Sub



Adrian Desanti

seba123neo

Cita de: Elemental Code en 20 Septiembre 2010, 16:05 PM
ahora si necesitas que sea maximizable pero que no lo puedas cambiar de tamaño
en el evento Form rezise pones algo asi

Código (vb) [Seleccionar]
on error resume next
me.height = X
me.width = Y


X e Y son el alto y ancho respectivamente

con ese codigo habria un horrible flickering del formulario, es mejor hacer un Hook a WM_GETMINMAXINFO

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson