Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Doming am September 26, 2025, 11:10:27

Titel: With Forms .... vereinfachen?
Beitrag von: Doming am September 26, 2025, 11:10:27
Hallo,

ich möchte in einem Modul Steuerelemente sowohl in einem Haupt, als auch in einem Unterformular ansprechen.
Das mache ich mit folgendem Code.

Public Sub MdlName(FormularName As String, _
                   SteuerelementName As String, _
                   Optional uFoName As String)
   
    If Nz(uFoName, "") <> "" Then
        With Forms(FormularName).Controls(uFoName)
            .Controls(SteuerelementName) = "blah"
        End With
    Else
        With Forms(FormularName)
            .Controls(SteuerelementName).Caption = "blah"
        End With
    End If
End Sub

Nun will ich natürlich gerne etwas umfangreichere Dinge mit dem Unter- bzw. Hauptformular machen, deswegen wäre es schön, wenn man die Ausdrücke Forms(FormularName).Controls(uFoName) und Forms(FormularName) selbst in eine Variable schreiben könnte.

Wie wäre da die korrekte Schreibweise?

Gruß
 Doming
Titel: Re: With Forms .... vereinfachen?
Beitrag von: PhilS am September 26, 2025, 12:05:01
Zitat von: Doming am September 26, 2025, 11:10:27deswegen wäre es schön, wenn man die Ausdrücke Forms(FormularName).Controls(uFoName) und Forms(FormularName) selbst in eine Variable schreiben könnte.

Wie wäre da die korrekte Schreibweise?
Dim Hfo as Form
Dim Ufo as Form
Set Hfo = Forms(FormularName)
Set Ufo = Hfo.Controls(uFoName).Form

Du kannst die Variablen auch spezifisch als die entsprechenden Formulare deklarieren:
 
Dim Hfo as Form_Hauptformularname
Dim Ufo as Form_Unterformularname
Die Zuweisung bleibt gleich.

Titel: Re: With Forms .... vereinfachen?
Beitrag von: Knobbi38 am September 26, 2025, 13:23:55
Hallo Doming,

solche Dinge gehören üblicherweise nicht in ein Modul, sondern in eine Klasse oder in die Klasse hinter dem Formular.

Wenn überhaupt, übergibt man dann nicht den Formularnamen, sondern wie bei Objekten üblich, eine Referenz auf das Objekt selber.

Knobbi38
Titel: Re: With Forms .... vereinfachen?
Beitrag von: PhilS am September 26, 2025, 13:43:21
Zitat von: Knobbi38 am September 26, 2025, 13:23:55solche Dinge gehören üblicherweise nicht in ein Modul, sondern in eine Klasse oder in die Klasse hinter dem Formular.
Ich finde, die "Dinge" die passieren sind nicht spezifisch genug beschrieben, um das beurteilen zu können.
Titel: Re: With Forms .... vereinfachen?
Beitrag von: Knobbi38 am September 26, 2025, 14:36:06
Ebend, dafür müsste es mehr als einen guten Grund für so einen Workflow geben. Aber du hast recht, dass kann man nicht beurteilen, weil die Beschreibung mehr als abstrakt ist. Zu "best practice" gehört das jedenfalls nicht.
Titel: Re: With Forms .... vereinfachen?
Beitrag von: Beaker s.a. am September 26, 2025, 16:40:17
ZitatNun will ich natürlich gerne etwas umfangreichere Dinge mit dem Unter- bzw. Hauptformular machen
Warum übergibst du dann nicht direkt eine Referenz?
Public Sub MdlName(hfo As Form, _
                   ctl As Control, _
                   Optional ufoctl As Control)