In diesem Teil fangen wir an uns mit der Event (oder Message)-Verarbeitung der Controls zu beschäftigen. Hierzu laden Sie das Demo-Projekt Control_Test.MPICProj und lassen sich den ControlTestDlg anzeigen.
Das erste was natürlich auffällt, sind sich drehenden Pfeile unten rechts, diese verarbeiten und senden in der Demo aber keinerlei Events. Darum richten Sie bitte auf die Checkboxen unten links (Überschrift Control-Condition-Test) ihr Augenmerk.
Enable/Disable deaktiviert bzw. aktiviert den Button-Schalter (Ctrl1) darunter und Show/Hide zeigt bzw. versteckt den Button-Schalter (Ctrl2) darunter.
Wie im Teil zuvor beschrieben, werden bestimmte Controls einer Eigenschaft (Variable) zugewiesen, die ihren Zustand / Wert aufnimmt. Für Enable/Disable ist das VAR_Disable und für Show/Hide VAR_Show (die Namen der Variablen können Sie natürlich frei wählen).
Ist Enable/Disable angewählt, hat es den Wert 1 bzw. TRUE.
In ControlCondition sieht man, das für den Button (Ctrl1), die Aktion Disable durchgeführt wird, wenn VAR_Disable TRUE ist. Dieses wird ausgeführt, wenn ein Dialog erzeugt wird, aber auch wenn ein Dialog zurzeit angezeigt wird.
Schauen Sie sich nun die obere linke Ecke mit den drei Checkboxen an. Auch hier werden Enable/Disable -Aktionen durchgeführt, wenn eine der drei Checkboxen aktiviert bzw. deaktiviert werden siehe ControlCondition -Bild oben.
Der noch ungeklärte Eintrag im Bild betrifft ein Icon, welches aktuell nicht zu sehen ist. Klicken Sie im Listview auf Text2a erscheint es neben dem Eingabe Feld. Dieses kommt nicht etwa zustande weil es der zweite Eintrag ist (jeder Programmierer weiß, es beginnt bei 0), sondern weil die Zeile wirklich den Wert 2 hat.
Nach dem Klick sehen Sie, dass auch das Eingabefeld den Wert 2 hat, dieses kommt daher, dass es die gleiche Eigenschaft verwendet, die auch das Listview nutzt. Geben Sie z. B. dort 1 ein und verlassen das Control (z. B. mit der Tab-Taste), wird das Symbol wieder versteckt und die Anzeige im Listview springt auf 1. Das Umschalten geschieht automatisch, hier müssen also keine extra Einstellungen getätigt werden.
Klicken Sie nun im CheckListCtrl nacheinander alle Einträge an, ändert sich das Eingabefeld in Fish, Dog, Cat, Human, (welches die jeweiligen Werte der Zeile sind, siehe Bild).
Ändern Sie das Eingabefeld auf Dog, Fish oder Fish, Dog (Tab-Taste) wird in der Liste Hund und Fisch aktiv.
Info: Im Dialog ist die Einstellung Sortieren gesetzt, darum unterscheidet sich die Anzeige von der Positionsvorgabe in der Einstellung.
Auch hier sind keine weiteren Angabe in ControlCondition, ControlEvent oder EventMapping nötig. Gleiches gilt für das ProgressControl die ListBox und ComboBox. Diese Control-Paare nutzen schlicht die gleiche Eigenschaft und reagieren ohne zutun auf deren Änderung.
Ganz anders sieht es beim FeatureTree- und den Text-Controls darum aus.
Dieses sendet bei Änderungen eine Vielzahl von Events auf die andere Controls reagieren bzw. die an diese weitergeleitet werden. So wird Browse und LocationLabel aktiv, wenn das gewählte Feature eine Verzeichnisänderung erlaubt. Weiterhin wird die Installationsgröße oder Beschreibung von anderen Text-Controls angezeigt.
Info: Leider lassen sich nicht alle Dinge in der Dialog-Vorschau simulieren, darum bleib das Listfeld über dem FeatureTree in der Vorschau leere, hier bedarf es einem Erstellungsvorgang.
Dieses soll es für dieses Mal gewesen sein, im nächsten Teil gehen wird anhand von Beispielen näher darauf ein.
Dialog-Editor Teil 5
Dialog-Editor Teil 5
Mit freundlichen Grüßen,
AKApplications, Volker J.
AKApplications, Volker J.