Die Community zu .NET und Classic VB.
Menü

FAQ 0045: Wie kann ich feststellen, ob eine Form geladen wurde?

 von 

Frage 

Wie kann ich feststellen, ob eine Form geladen wurde?

Antwort  

Es gibt mehrere Methoden, das festzustellen.
Die einfachste, aber auch ineffizenteste Methode ist der Einsatz einer globalen Variable. Dieser Weg ist sehr unflexibel.
Bei Weitem besser ist es, die Forms-Auflistung, welche VB zur Verfügung stellt, abzufragen.

Public Function IsFormLoaded(ByRef vData As Variant)
    '   Eine Variable wird benötigt
    Dim objForm As Form
    
    '   Standard-Rückgabe setzen
    IsFormLoaded = False
    
    '   Wurde ein String übergeben?
    If (VarType(vData) = vbString) Then
        '   Ja, alle Forms nach dem Namen durchsuchen
        For Each objForm In VB.Forms
            '   Ist die aktuelle Form die gesuchte?
            If objForm.Name = vData Then
                '   Ja, Form gefunden
                IsFormLoaded = True
                
                '   Das war es
                Exit Function
            End If
        Next objForm
    Else
        '   Nein, handelt es sich um ein Objekt?
        If (VarType(vData) = vbObject) Then
            '   Ja, dann den Namen raussuchen
            IsFormLoaded = IsFormLoaded(TypeName$(vData))
        End If
    End If
End Function

Listing 1: Form anhand ihres Namens suchen

'   Eine Variable wird benötigt
Dim NewDLG As Form

'   Eine Instanz des Dialogs anlegen
Set NewDLG = New Form2

'   Dialog laden
Load NewDLG

'   Funktion aufrufen
Debug.Print "Form2 als String: " & CStr(IsFormLoaded("Form2"))
Debug.Print "Form2 als Objekt: " & CStr(IsFormLoaded(Form2))

'   Dialog entladen
Unload NewDLG

'   Instanz des Dialogs entfernen
Set NewDLG = Nothing

Listing 2: Beispiel eines Aufrufs

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.