Hallo Henry,
warum ich das nicht in ein eigenes Modul lege:
Ich habe in praktisch jedem Formular im Formular-Code unten eine Methode Dev, die etwa so aussieht:
Sub Dev()
'Steuerelemente ein- oder ausblenden
'Pixel- bzw. Twip-genaue Ausrichtungen
'Bedingte Formatierungen
'Div. Überprüfungen (z. B. Datenquelle)
'Feedback Debug.Print "Dev-Method for " & Me.Name & " done."
End Sub 'Form_SomeForm.Dev Die letzte Zeile Form_SomeForm.Dev kopiere ich bei der Arbeit am Formular (während es also in der Entwurfsansicht geöffnet ist) nach Bedarf ins Direktfenster und führe die Methode von dort aus aus. Manches, wie Änderungen an einer Reihe von Steuerelementen oder pixelgenaue Ausrichtungen, wird dadurch erst möglich / sinnvoll. Um nun vor Release einer neuen Datenbankversion die Dev-Methoden aller Formulare bzw. Berichte auszuführen (und so in der Folge einen definierten Zustand sicherzustellen), habe ich eine Methode in einem Standard-Modul, die etwa so aussieht: Sub Dev4All() For Each Formular und Bericht in Datenbank
'Formular in Entwicklungsansicht öffnen
'Entwicklungszeitmethode durchführen Select Case Formularname Case SomeForm1:Form_SomeForm1.Dev Case SomeForm2:Form_SomeForm2.Dev End Select 'Formular schließen
Next
End Sub Funktioniert soweit einwandfrei. Ohne Frage eleganter wäre eine Lösung, die mir an der Stelle das Hartcodieren der Formularnamen spart, da sich die ja immer wieder mal ändern. Weil's aber erstens dort dann nicht mehr kompiliert und ich zweitens den betreffenden Code nicht händisch schreibe, sondern generiere, nicht weiter tragisch.
Danke für deinen Hinweis zum acSysCmdGetObjectState, ich werde das überprüfen! Grüße Georg
|