ich platze direkt mit meiner Frage raus:
Wofür braucht man die Property-Methoden? (Und warum findet man sie so oft in Klassenmodulen?)
(also schon fast zwei Fragen)
Was ich mir von den Property-Methoden erhofft hatte, war so etwas wie:
Commandbutton1.Right (also, dass man dem Ding eine Eigenschaft für den rechten Rand zuweist)
Dafür finde ich es aber mittlerweile einfacher, eine Funktion zu schreiben
Function RechterRand (obj as object) as single
RechterRand = obj.Left + obj.Width
End Function
Ansonsten finde ich Beispiele, wie man z.B. das "X" in einer Userform unterdrücken kann, oder wie man eine Userform in ihrer Grösse
veränderbar macht (z.B. https://www.herber.de/forum/archiv/148to152/t148266.htm), die alle folgendermassen laufen:
In einem Klassenmodul steht:
Public Property Set Form(oForm As Object)
If Val(Application.Version) < 9 Then
hWndForm = FindWindow("ThunderXFrame", oForm.Caption) 'XL97
Else
hWndForm = FindWindow("ThunderDFrame", oForm.Caption) 'XL2000
End If
SetFormStyle
End Property
... und API-Deklarationen und weiterer Code für "SetFormStyle" usw.
In dem Code der Userform steht:
Dim oFormChanger As New CFormChanger
Sub UserForm_Initialize()
Set oFormChanger.Form = Me
End Sub
Funktioniert!
Aber es geht auch, wenn man
im Klassenmodul die "Property Set"-Zeile in
"Public Sub FormChange(oForm As Object)"
umwandelt und im UserFormCode die aufrufende Zeile in
"FormChange Me"
umwandelt,
und schliesslich das Klassenmodul in ein ganz normales CodeModul kopiert.
Und es funktioniert auch! Also, Fazit, nix mit Property, das ganze in einem normalen Modul, und wie eine ganz normale Sub-Methode aufrufen. Ich finde das übersichtlicher.
Klar, in Klassenmodulen kann man Controls, die man während der Laufzeit in eine Userform einfügt, Ereignisse zuweisen. Das finde ich toll!
Aber ansonsten habe ich noch keinen Sinn gefunden, warum die Dinger so oft verwendet werden. Und nun frage ich mich - entgeht mir da ein Programmiertrick?
Wo liegt der Vorteil von "Property"-Verwendungen?
Hoffentlich versteht man das, was ich hier zu beschreiben versuche, und hoffentlich kann mir jemand eine Leuchte aufgehen helfen.
Danke und mfG,
Arno.