ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 10.01.2000

Diese Seite wurde zuletzt aktualisiert am 10.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_showdlg@aboutvb.de


Ein Dialog wird aufgerufen - hat der Anwender die Daten bearbeitet und die Änderung bestätigt, oder hat er den Dialog abgebrochen?

Selbstverständlich können Sie ein Form als Dialog verwenden, der modal angezeigt wird (die übrigen Forms des Projekts sind so lange gesperrt, wie das Dialog-Form sichtbar ist). Sie müssen dann "nur" die im Dialog zu bearbeitenden Werte übergeben, das Dialog-Form modal aufrufen, und nachdem der Anwender es geschlossen hat, müssen Sie prüfen, ob der Anwender seine Eingaben mit "OK" bestätigt hat, oder ob er den Dialog abgebrochen hat. Insbesondere letzteres kann unter Umständen im Code in ein ziemliches Hin und Her zwischen aufrufenden Code und dem Dialog-Form ausarten. Viel praktischer, sicherer und später leichter nachzuvollziehen wäre es doch, wenn Sie den Aufruf des Dialog-Forms auf einen einzigen Funktionsaufruf beschränken könnten.

Dies ist gar nicht so kompliziert, wie es auf den ersten Blick vielleicht erscheinen mag. Sie versehen das Dialog-Form mit einer öffentlichen Funktion als Aufruf-Methode. Dieser Funktion, nennen wir sie ShowDlg, übergeben Sie die zu bearbeitenden Werte (und gegebenenfalls das aufrufende Form). Und wenn die Funktion zurückkehrt, brauchen Sie nur zu prüfen, ob sie True (für "OK") zurückgibt. Ist dies der Fall verarbeiten Sie die zurückgegebenen Werte entsprechend - falls nicht, wurde der Dialog abgebrochen, und Sie brauchen die Bearbeitungen der Werte nicht zu berücksichtigen. Ein Aufruf sähe beispielsweise im Code so aus

Private Sub cmdChange_Click()
  Dim nDlg As frmDlgTest
  Dim nValue As String
  
  nValue = lblValue.Caption
  Set nDlg = New frmDlgTest
  If nDlg.ShowDlg(nValue, Me) Then
    lblValue.Caption = nValue
  End If
End Sub

Das Prinzip beruht darauf, die Anzeige des Dialogs dieser Methode zu überlassen und das Form beim Betätigen der OK- oder Abbrechen-Schaltflächen nur zu verbergen, statt es zu entladen. So können Sie noch in dieser Methode die Werte der Steuerelemente, die zur Bearbeitung der Werte dienen, auslesen und in den Methoden-Parametern zurückgeben. Ob der Anwender seine Eingaben bestätigt hat, oder ob er den Dialog abgebrochen hat, wird in der Form-lokalen Variablen mCancel festgehalten. Ist nach dem Anzeigen des Forms (Me.Show) mCancel immer noch False, hat der Anwender die OK-Schaltfläche betätigt - die geänderten Werte werden in die Übergabe-Parameter zurückgeschrieben und die Methode ShowDlg erhält den Rückgabewert True. Zuletzt wird noch das Form wieder sauber entladen.

Der Code des aufgerufenen Dialog-Forms:

Private mCancel As Boolean

Public Function ShowDlg(Value As String, _
 Optional ParentForm As Form) As Boolean
  txtValue.Text = Value
  mCancel = False
  Me.Show vbModal, ParentForm
  If Not mCancel Then
    Value = txtValue.Text
    ShowDlg = True
  End If
  Unload Me
End Function

Private Sub cmdCancel_Click()
  mCancel = True
  Me.Hide
End Sub

Private Sub cmdOk_Click()
  Me.Hide
End Sub

Damit auch das Schließen des Dialog-Forms über das Systemmenü bzw. die entsprechende Schaltfläche in der Titelleiste berücksichtigt werden kann, müssen Sie noch das MSDN Library - VB QueryUnloadQueryUnload-Ereignis des Dialog-Forms berücksichtigen. Wenn der Anwender das Form schließt, enthält der Parameter UnloadMode des Ereignisses den Konstanten-Wert vbFormControlMenu. In der Regel bedeutet dies einen Abbruch eines Dialogs - die Variable mCancel sollte hier also auf True gesetzt werden. Sie können natürlich diese Konvention eigenwillig ins Gegenteil verkehren und mCancel gleich False lassen - das Schließen des Dialogs würde dann als Bestätigung gelten. Damit das Dialog-Form jedoch jetzt noch nicht entladen wird, sondern erst ausdrücklich zum Abschluss der ShowDlg-Methode, ist der Cancel-Parameter auf True zu setzen und stattdessen das Form mit Me.Hide zu verbergen.

Private Sub Form_QueryUnload(Cancel As Integer, _
 UnloadMode As Integer)
  If UnloadMode = vbFormControlMenu Then
    Cancel = True
    mCancel = True
    Me.Hide
  End If
End Sub

Das Form des Beispiel-Projekts (siehe DownloadDownload) können Sie auch als Vorlage in Ihrem Templates-Verzeichnis im Visual Basic-Ordner ablegen - Sie können es dann jederzeit als Vorlage laden und beliebig modifizieren.


Beispiel-Projekt ShowDlgTest (showdlg.zip - ca. 3 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer