• Welcome to Valhalla Legends Archive.
 

Resizing Form

Started by WiLD, October 15, 2003, 05:23 AM

Previous topic - Next topic

Adron

Ah, OK. Well, forms exist in many languages, and it seems for example VB.NET has much better features for looping through all controls on a form to resize them.

Fr0z3N


Public Function ResizeAll(FormName As Form)
   Dim tmpControl As Control
   On Error Resume Next
   'Ignores errors in case the control does
   '     n't
   'have a width, height, etc.


   If PrevResizeX = 0 Then
  'If the previous form width was 0
  'Which means that this function wasn't r
  '     un before
  'then change prevresizex and y and exit


'     function
   PrevResizeX = FormName.ScaleWidth
   PrevResizeY = FormName.ScaleHeight
   Exit Function
End If


For Each tmpControl In FormName
   'A loop to make tmpControl equal to ever
   '     y
   'control on the form


   If TypeOf tmpControl Is Line Then
  'Checks the type of control, if its a
  'Line, change its X1, X2, Y1, Y2 values
  tmpControl.X1 = tmpControl.X1 / PrevResizeX * FormName.ScaleWidth
  tmpControl.X2 = tmpControl.X2 / PrevResizeX * FormName.ScaleWidth
  tmpControl.Y1 = tmpControl.Y1 / PrevResizeY * FormName.ScaleHeight
  tmpControl.Y2 = tmpControl.Y2 / PrevResizeY * FormName.ScaleHeight
  'These four lines see the previous ratio
  '
  'Of the control to the form, and change
  '     they're
  'current ratios to the same thing
   Else
  'Changes everything elses left, top
  'Width, and height
  tmpControl.Left = tmpControl.Left / PrevResizeX * FormName.ScaleWidth
  tmpControl.Top = tmpControl.Top / PrevResizeY * FormName.ScaleHeight
  tmpControl.Width = tmpControl.Width / PrevResizeX * FormName.ScaleWidth
  tmpControl.Height = tmpControl.Height / PrevResizeY * FormName.ScaleHeight
  'These four lines see the previous ratio
  '
  'Of the control to the form, and change
  '     they're
  'current ratios to the same thing
   End If
Next tmpControl
PrevResizeX = FormName.ScaleWidth
PrevResizeY = FormName.ScaleHeight
'Changes prevresize x and y to current w
'     idth
'and height
End Function



Private Sub Form_Resize()
If WindowState = vbMinimized Then Exit Sub
ResizeAll Me
End Sub


Archonist

#17
Private Sub Form_Resize()
Chat.Width = Me.ScaleWidth - lvUsers.Width
Chat.Height = Me.ScaleHeight - txtSend.Height
lvUsers.Height = Me.ScaleHeight - lChan.Height - txtSend.Height
lChan.Left = Chat.Width
lvUsers.Left = Chat.Width
txtSend.Top = Chat.Height
txtSend.Width = Me.ScaleWidth
End Sub


It works perfectly for my needs.

dxoigmn

Quote from: Archonist on November 05, 2003, 07:00 PM
Private Sub Form_Resize()
Chat.Width = Me.ScaleWidth - lvUsers.Width
Chat.Height = Me.ScaleHeight - txtSend.Height
lvUsers.Height = Me.ScaleHeight - lChan.Height - txtSend.Height
lChan.Left = Chat.Width
lvUsers.Left = Chat.Width
txtSend.Top = Chat.Height
txtSend.Width = Me.ScaleWidth
End Sub


It works perfectly for my needs.


What about when you resize the form really small?  Negative values?  Also, it's better to use the Move() property of controls.

Fr0z3N

Therefor

Mine > Archon's

dxoigmn

Quote from: Fr0z3N on November 06, 2003, 02:18 PM
Therefor

Mine > Archon's

Except that you don't use the Move() property.

Banana fanna fo fanna

Except that Move() isn't a VB property.

dxoigmn


Adron


Fr0z3N


dxoigmn

#25
Quote from: Adron on November 07, 2003, 07:56 PM
Quote from: kamakazie on November 06, 2003, 07:29 PM
Quote from: St0rm.iD on November 06, 2003, 05:29 PM
Except that Move() isn't a VB property.

Huh?

It's a method?

The line between method and property in VB is thin.  I think of the Move() property/method as something that assigns values, not something that does work on those values.