|
Die Methoden ScaleX und ScaleY eines Forms oder eines anderen Container-Objekts wie PictureBox, UserControl, UserDocument oder PropertyPage rechnen einen gegebenen Wert von einer ScaleMode-Maßeinheit in eine andere um. Dabei wird die aktuelle Einstellung ScaleMode-Eigenschaft des betreffenden Objekts in keinster Weise verändert, sondern höchsten als Ziel-Maßeinheit herangezogen, wenn der optionale ToScale-Parameter nicht angegeben worden ist.
Resultat = Object.ScaleX(Wert[, FromScale][, ToScale])
So praktisch diese Methoden auch sind - ein Nachteil kann mitunter sein, dass in Ihrem Code gerade keines der oben angeführten Objekte greifbar ist, dessen ScaleX/Y-Methoden Sie verwenden könnten. Doch weil ein Aufruf dieser Methoden das Objekt unberührt lässt, ist es ja eigentlich egal, welches Objekt Sie mit der Aufgabe der Umrechnung betrauen. So können Sie einfach das erste Form aus der Forms-Collection (es hat den Index 0) dazu heranziehen (natürlich ist vorausgesetzt, dass mindestens ein Form in der laufenden Anwendung geladen sein muss). Da Sie ohne explizite Prüfung die aktuelle ScaleMode-Einstellung dieses Forms nicht kennen können, sollten Sie am besten einfach die Optionalität der Parameter FromScale und ToScale ignorieren und immer die gewünschten ScaleMode-Angaben übergeben.
Sie können aber auch allgemein verwendbare Hilfsfunktionen in einem Standard-Modul anlegen. Dabei können Sie die Parameter FromScale und ToScale optional lassen, aber mit einer ScaleMode-Angabe vorbelegen (empfehlenswert wäre vbTwips, da VB-Standard).
Public Function DefScaleX(ByVal Width As Single, _
Optional ByVal FromScale As ScaleModeConstants = vbTwips, _
Optional ByVal ToScale As ScaleModeConstants = vbTwips) As Single
DefScaleX = Forms(0).ScaleX(Width, FromScale, ToScale)
End Function
Public Function DefScaleY(ByVal Width As Single, _
Optional ByVal FromScale As ScaleModeConstants = vbTwips, _
Optional ByVal ToScale As ScaleModeConstants = vbTwips) As Single
DefScaleY = Forms(0).ScaleY(Width, FromScale, ToScale)
End Function
|