Hallo Dominique,
hier mal Source, wo es gemacht wird:
' deklariere diese Typen in einem Modul
Type tNormControl
Top As Long
Left As Long
Height As Long
Width As Long
FSize As Double
End Type
Type tNormSize
Height As Long
Width As Long
FSize As Double
dx As Long
dy As Long
End Type
Sub FormgrößeAnpassen(frm As Form, Norm() As tNormControl, NormSize As _
tNormSize, ByVal NewSize As Integer)
Const WM_SetRedraw = 11
Dim Visible As Integer, FSize As Integer
Dim I As Integer, Spalte As Integer
Dim ret As Long
Dim FFaktor As Double, FontSize As Double
If frm.WindowState = vbMinimized Then Exit Sub ' Minimized
Visible = frm.Visible
If Visible Then ret = SendMessage(frm.hwnd, WM_SetRedraw, 0, 0)
If NewSize = 0 Then NewSize = 160
FFaktor = NewSize / 100
On Error Resume Next
For I = 0 To (frm.Count - 1)
If TypeOf frm.Controls(I) Is PictureBox Then 'NOT geht nicht
Else
If frm.Controls(I).Name = "Table1" Or frm.Controls(I).Name = "Table2" Then
frm.Hide
frm.Controls(I).Move Int(Norm(I).Left * FFaktor), Int(Norm(I).Top * _
FFaktor), Int(Norm(I).Width * FFaktor), Int(Norm(I).Height * FFaktor)
frm.Controls(I).RowHeight = Int(270 * FFaktor)
frm.Controls(I).HeadFont.Size = Int(Norm(I).FSize * FFaktor)
frm.Controls(I).Font.Size = Int(Norm(I).FSize * FFaktor)
For Spalte = 0 To (frm.Controls(I).VisibleCols - 1)
' frm.Table5.Columns(Spalte).Width dient als Standardbreite zur
' Spalteneinstellung
frm.Controls(I).Columns(Spalte).Width = Int(frm.Table5.Columns( _
Spalte).Width * _ FFaktor)
Next Spalte
frm.Show
Else
frm.Controls(I).Move Int(Norm(I).Left * FFaktor), Int(Norm(I).Top * _
FFaktor), _ Int(Norm(I).Width * FFaktor), Int(Norm(I).Height * _
FFaktor)
frm.Controls(I).FontSize = Int(Norm(I).FSize * FFaktor)
End If
End If
Next I
If Visible Then
ret = SendMessage(frm.hwnd, WM_SetRedraw, 1, 0)
frm.Refresh
DoEvents
End If
frm.Height = Int(NormSize.Height * FFaktor) + NormSize.dy
frm.Width = Int(NormSize.Width * FFaktor) + NormSize.dx
On Error GoTo 0
End Sub
'------------------------------------------------------------------------------
' -----------------------------
' deklariere diese Variablen modal in der Form
Dim Norm() As tNormControl
Dim NormSize As tNormSize
'den Aufruf der Procedure (der letze Wert ist aus einer Listbox =
' Prozentangabe 75%, 87,5% 100%, 125%, 150% und Vollbild) stellst du am Besten,
' in Form_Load
FormgrößeAnpassen Me, Norm(), NormSize, Val(CboZoom.List(CboZoom.ListIndex)) außerdem brauchst du noch die Deklaration der API SendMessage.
Viel Erfolg und Grüße
BasTler |