brammetje: twips
VB drukt coordinaten en afmetingen standaard in twips uit (die 6000 in jouw code). Met standaard instellingen gaan er 15 twips in een pixel, maar dat hoeft dus lang niet overal zo te zijn. Gelukkig wordt dit getalletje ook ergens opgeslagen, en wel hier: Screen.TwipsPerPixelX en Screen.TwipsPerPixelY. Voor een minimale grootte van 400x400 pixels zou jouw MouseMove sub er als volgt uitzien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Private Sub StretchCorner_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = vbLeftButton Then
If Me.Height + Y - StretchCornerY <= 400 * Screen.TwipsPerPixelY Then
Me.Height = 400 * Screen.TwipsPerPixelY
Else
Me.Height = Me.Height + Y - StretchCornerY
End If
If Me.Width + X - StretchCornerX <= 400 * Screen.TwipsPerPixelX Then
Me.Width = 400 * Screen.TwipsPerPixelX
Else
Me.Width = Me.Width + X - StretchCornerX
End If
End If
End Sub |
Overigens vind ik dat persoonlijk nogal storend in VB, ik reken liever alles met pixels. Gelukkig kun je de scalemode van client areas op pixels zetten, maar dan nog zijn er twee nadelen:
1) je moet voor iedere client area de scalemode opnieuw op pixels zetten (zou eigenlijk een ambient property moeten zijn imho, dus je stelt het 1 keer op pixels in en vervolgens staat ieder control dat je maakt meteen op pixels), en
2) het werkt alleen in client areas, dus de nonclient afmetingen van je form moet je nog steeds in twips opgeven