Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: AOT am Juli 10, 2024, 13:34:19

Titel: Ueberpruefen ob Unter/Hauptformular
Beitrag von: AOT am Juli 10, 2024, 13:34:19
Liebes Forum,

ich möchte für eine Funktion vorher überprüfen, ob ich mich gerade in einem Hauptformular oder einem Unterformular befinde. Dabei sind gleich zwei Fragen / Probleme aufgetaucht:

Ich wollte das mit
If me.parent is Nothing überprüfen.

Das funktioniert, wenn ich mich in einem UF befinde. Wenn ich in einem HF bin, dann kommt die Fehlermeldung: "Laufzeitfehler 2452. Der von Ihnen eingegebene Ausdruck enthält einen ungültigen Verweis auf die Hauptobjekt-Eigenschaft." Kann man das so nicht überprüfen?

Zweites Problem: Da ich es öfter brauche, habe ich es zunächst mit Screen.ActiveForm.parent probiert, was weder bei einem UF noch bei einem HF funktioniert. Dazu sagt Microsoft auch: "Wenn ein Unterformular den Fokus hat, verweist ActiveForm auf das Hauptformular." Gibt es hier eine Alternative?

Vielen Dank und viele Grüße
Jürgen


Titel: Re: Ueberpruefen ob Unter/Hauptformular
Beitrag von: PhilS am Juli 10, 2024, 14:17:56
Das ist einer der eher wenigen Anwendungsfälle, wo ich zur Verwendung von On Error Resume Next (https://www.youtube.com/watch?v=D4yxwUplWvc) raten würde.
Dazu solltest du dir eine eigene Funktion schreiben, die das kapselt. Die kann gut in ein allgemeines Modul.
Public Function IstUnterformular(DasFormular as Form) As Boolean
  Dim dummyParent as Object
  On Error Resume Next
  Set  dummyParent  = DasFormular.Parent
  On Error goto 0
  IstUnterformular  = Not  dummyParent Is Nothing
End Function

Aufruf dann so:
If IstUnterformular(Me) Then
  MsgBox("Aktuelles Form ist ein UFO!")
Else
  MsgBox("Aktuelles Form ist ein Hauptform")
End If

Titel: Re: Ueberpruefen ob Unter/Hauptformular
Beitrag von: AOT am Juli 11, 2024, 11:32:35
Lieber PhilS,

danke für die Antwort!

Gruß Jürgen