<< Click to Display Table of Contents >> Die Dialogfunktion |
Ein benutzerdefinierter Dialog kann bei Bedarf mit einer Dialogfunktion verknüpft werden. Diese Funktion wird immer dann aufgerufen, wenn das Dialogfeld initialisiert wird oder wenn der Benutzer ein beliebiges Kontrollelement betätigt. Mit Hilfe einer Dialogfunktion ist es möglich, Dialoge zu verschachteln und Kontrollelemente zu deaktivieren oder auszublenden.
Um ein Dialogfenster mit einer Dialogfunktion zu verknüpfen, wird der Funktionsname an die Dialogdefinition angehängt, wobei ein Punkt vorangestellt wird. Hier wird beispielsweise dem Dialog MyDlg eine Dialogfunktion namens MyDlgFunc zugewiesen:
Begin Dialog MyDlg 60, 60, 260, 188, "Test", .MyDlgFunc
Die zu überwachenden Steuerelemente
Jedem Steuerelement des Dialogfensters, das von der Dialogfunktion überwacht werden soll, muss ein eindeutiger Bezeichner zugewiesen werden. Dieser muss als letzter Parameter in der Definition des Steuerelements angegeben werden und mit einem Punkt beginnen.
CheckBox 8, 56, 203, 16, "Alles anzeigen", .Chk1
Hier wird dem Kontrollkästchen der Bezeichner "Chk1" zugewiesen.
Syntax der Dialogfunktion
Die Syntax der Dialogfunktion ist wie folgt aufgebaut:
Function FunctionName(ControlID$, Action%, SuppValue%)
[Anweisungen]
FunctionName = ReturnValue
End Function
Die Dialogfunktion liefert einen Wert zurück, wenn der Anwender auf OK oder Abbrechen klickt. Setzen Sie diesen ReturnValue in der Dialogfunktion auf 0, wird der Dialog geschlossen, bei einem anderen Wert bleibt der Dialog offen.
Die Parameter der Dialogfunktion:
▪ControlID$
Wenn Action = 2 ist, enthält dieser Parameter die (bei der Dialogdefinition angegebene) ID des vom Anwender betätigten Kontrollelements. |
▪Action%
1, wenn der Dialog initialisiert wird (die anderen Parameter haben dann keine Bedeutung). |
2, wenn der Benutzer ein Kontrollelement betätigt hat. Das Kontrollelement wird durch ControlID$ identifiziert, und SuppValue% enthält weitere Informationen. |
▪SuppValue%:
Informationen, welche Art von Änderung durchgeführt wurde, abhängig vom Typ des Kontrollelements: |
Kontrollkästchen: 0, wenn ausgeschaltet, beziehungsweise 1, wenn eingeschaltet. |
Optionsfeld: Nummer des gewählten Optionsfelds, wobei das erste Feld der Gruppe die Nummer 0 trägt. |
Befehlsschaltfläche: keine Bedeutung |
OK: 1 |
Abbrechen: 2 |
Im folgenden Beispiel wird die Dialogfunktion eines Dialogs mittels einer Case-Verzweigung ausgewertet. Der Parameter SuppValue wird dabei nicht berücksichtigt.
Sub Main
Begin Dialog UserDialog1 60,60, 260, 188, "Dialogfunktion", .Dialogfn
Text 8, 10, 73, 13, "Text:"
TextBox 8, 26, 160, 18, .FText
CheckBox 8, 56, 203, 16, "Alles anzeigen",. Chk1
GroupBox 8, 79, 230, 70, "Gruppenfeld:", .Group
CheckBox 18, 100, 189, 16, "Beschriftung der Schaltfläche ändern", .Chk2
PushButton 18, 118, 159, 16, "Schaltfläche", .History
OKButton 177, 8, 58, 21
CancelButton 177, 32, 58, 21
End Dialog
Dim Dlg1 As UserDialog1
x = Dialog(Dlg1)
End Sub ' (Main)
Function Dialogfn(ControlID$, Action%, SuppValue%)
Begin Dialog UserDialog2 160,160, 260, 188, "Dialogfunktion", .Dialogfunktion
Text 8,10,73,13, "Eingabefeld"
TextBox 8, 26, 160, 18, .FText
CheckBox 8, 56, 203, 16, "Kontrollkästchen",. ch1
CheckBox 18, 100, 189, 16, "Kontrollkästchen", .ch2
PushButton 18, 118, 159, 16, "Schaltfläche", .but1
OKButton 177, 8, 58, 21
CancelButton 177, 32, 58, 21
End Dialog
Dim Dlg2 As UserDialog2
Dlg2.FText = "Dies ist die Vorgabe"
Select Case Action%
Case 1
DlgEnable "Group", 0
DlgVisible "Chk2", 0
DlgVisible "History", 0
Case 2
If ControlID$ = "Chk1" Then
DlgEnable "Group"
DlgVisible "Chk2"
DlgVisible "History"
End If
If ControlID$ = "Chk2" Then
DlgText "History", "Weiteren Dialog anzeigen"
End If
If ControlID$ = "History" Then
Dialogfn = 1
x = Dialog(Dlg2)
End If
Case Else
End Select
Dialogfn = 1
End Function