Option Explicit
Dim sonGEN As Long
Dim sonYUK As Long
Dim genFARK As Double
Dim yukFARK As Double
Private Sub Form_Initialize()
sonGEN = Me.Width
sonYUK = Me.Height
End Sub
Private Sub Form_Resize()
'ilk initialize'de resize çalıştırılacak. aman bir hata oluşmasın.
If sonGEN = 0 Or sonYUK = 0 Then Exit Sub
'eğer sadece yükseklik değiştiyse
If sonGEN = Me.Width And sonYUK <> Me.Height Then
Me.Width = Me.Height * 4 / 3
GoTo SON
End If
'eğer sadece genişlik değiştiyse
If sonGEN <> Me.Width And sonYUK = Me.Height Then
Me.Height = Me.Width * 3 / 4
GoTo SON
End If
'eğer yüseklik ve genişlik değiştiyse
If sonGEN <> Me.Width And sonYUK <> Me.Height Then
'genişlikteki ve yükseklikteki farkların eskilerine oranlarını bul ve fazlaca değişene göre formu boyutlandır.
genFARK = Abs(sonGEN - Me.Width) / sonGEN
yukFARK = Abs(sonYUK - Me.Height) / sonYUK
'eğer genişlikteki değişim büyükse...
If genFARK > yukFARK Then
Me.Height = Me.Width / 4 * 3
End If
'eğer yükseklikteki değişim büyükse...
If yukFARK > genFARK Then
Me.Width = Me.Height / 3 * 4
End If
'NOT: eğer değişimlerin birbirlerine üstünlükleri yoksa zaten form eşit oranda büyütülmüştür.
End If
'daha sonra değişiklik var mı anlamak için
SON:
sonGEN = Me.Width
sonYUK = Me.Height
End Sub