vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Sonstiges   |   VB-Versionen: VB4, VB5, VB615.07.02
Tag-Eigenschaft einer Form gekonnt eingesetzt

Ein Beispiel, wie man die Tag-Eigenschaft einer Form für den "Beenden"-Status eines Dialogfensters einsetzen kann.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  18.684 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Eine Anwendung besteht zweifelsohne in den wenigsten Fällen aus einer einzigen Form. Meist werden weitere Forms benötigt, um z.B. Einstellungen festzulegen, eine bestimmte Auswahl zu treffen und vieles mehr.

Vor allem VB-Einsteiger haben hier so ihre Probleme und fragen sich dann immer wieder: "Wie kann ich in der Hauptform feststellen, welche Eingaben der Anwender im Dialogfenster vorgenommen hat?"

Das Problem liegt einfach daran, dass mit dem Schließen des Dialogfenster die Einstellungen und Eingaben weg sind

Nehmen wir an, der Anwender soll in einem Extra-Dialog ein Passwort eingeben. Die Passwort-Prüfung selbst erfolgt über einen "OK"-Button. Natürlich besitzt der Dialog auch einen "Abbrechen"-Button. Woher weiß jetzt aber die aufrufende Form, ob das Passwort korrekt eingegeben wurde, oder der Anwender den Abbrechen-Button gewählt hat?

Und genau hier bringen wir jetzt die Tag-Eigenschaft der Form ins Spiel. Bei korrekter Passwort-Eingabe setzen wir Tag = True, andernfalls logischerweise Tag = False.

Anschließend entladen wir die Form nicht sofort (Unload frmPassword), sondern "verstecken" diese mit Me.Hide. Der Dialog "verschwindet" und das Programm kehrt automatisch zurück ins Hauptprogramm, von wo aus wir dann bequem die Tag-Eigenschaft des Passwort-Dialogs abfragen können.

' Passwort-Dialog aus frmMain aufrufen
Dim bResult As Boolean
 
Load frmPassword
With frmPassword
  .Show vbModal
  bResult = (.Tag = True)
End With
Unload frmPassword
 
If bResult Then
  ' Jepp - korrekte Passwort-Eingabe
  ...
Else
  ' Abbrechen wurde gewählt
End If

Der dazugehörige Code des Passwort-Dialogs sieht wie folgt aus:

Private Sub cmdOK_Click()
  ' Passwort-Prüfung
  If txtPassword.Text = "geheim" Then
    ' OK, Passwort korrekt
    Me.Tag = True
    Me.Hide
  Else
    MsgBox "Falsches Kennwort!"
  End If
End Sub
Private Sub cmdCancel_Click()
  ' Abbrechen
  Me.Tag = False
  Me.Hide
End Sub

So, das ganze funktioniert soweit prächtig. Allerdings ergibt sich jetzt noch ein Problem. Und zwar dann, wenn der Anwender den Passwort-Dialog nicht über den "Abbrechen"-Button, sondern über das "Schließen"-Symbol der Form beendet. Denn dann wird die Form geschlossen und die Tag-Eigenschaft ist leer.

Fügen wir also noch eine kleine Abfrage ein - und zwar ins Form_QueryUnload-Event. Dieses wird bekanntlich immer dann ausgelöst, wenn die Form geschlossen werden soll. Wenn wir hier "Cancel" auf True setzen und dann sofort den "Abbrechen"-Button per Code ausführen, bleibt die Form geladen und wir können im Hauptprogramm wieder die Tag-Eigenschaftauswerten.

Private Sub Form_QueryUnload(UnloadMode As Integer, _
  Cancel As Integer)
 
  ' Nur, wenn die Form nicht per Code entladen wird
  ' (Unload frmPassword)
  If UnloadMode <> vbFormCode Then
    Cancel = True
    cmdCancel.Value = True
  End If
End Sub

Die hier beschriebene Vorgehensweise lässt sich auch immer dann sehr schön anwenden, wenn man aus dem Hauptprogramm Einstellungen und Eingaben aus dem zusätzlichen Dialogfenster verarbeiten oder speichern muss.

Beispiel: In einem Dialog soll der User seinen Namen und seine EMail-Adresse eingeben. Diese Angaben benötigt die aufrufende Prozedur z.B. um sie in eine Liste einzutragen.

' Dialog anzeigen
Load frmDialog
With frmDialog
  .Show vbModal
  If .Tag = True Then
    ' Eingaben in Liste eintragen
    lstName.AddItem .txtName.Text + "<" + .txtEMail.Text + ">"
  End If
End With
Unload frmDialog

Dieser Tipp wurde bereits 18.684 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel