Dialog-Editor Teil 1

Antworten
Volker
Beiträge: 37
Registriert: 08.07.2022, 09:25

Dialog-Editor Teil 1

Beitrag von Volker »

Bild

Der Dialog-Editor ist ein zentrales und mächtiges Tool, er ermöglicht es jeden Dialog des Setups
an die eigenen Bedürfnisse anzupassen, weitere Dialog anzulegen oder aber das gesamte
Aussehen durch Styles und Theme zu verändern.

In diesem ersten Teil beschäftigen wird uns nur mit den Grundlagen dieses Tools.

Diese Seite umpasst ein zentrales Fenster welches den aktuell ausgewählten
Dialog darstellt und acht weitere frei andockbare Fenster.

Links im Bild: Dialog und Controls.
Unten im Bild: DialogInit, Eventmapping, ControlEvent und ControlCondition
Rechts im Bild: Eigenschaften und Control-Liste.

Dialoge:
Hier werden alle Dialog des aktuelle Projektes gelistet, welche zusätzlich eingeteilt sind in
Assistenten Seiten und Weitere Seiten.
Wird einer der Einträge angeklickt, wird dieses der aktuell ausgewählte Dialog.
Jeder Dialog hat sein eignes Redo/Undo, welchseln Sie also zwischen den Dialogen,
bezieht sich ein Redo/Undo immer auf den letzten hier ausgeführeten Arbeitsschritt.

Tipp: Machen Sie dennoch vorher eine Kopie ihres Projektes, wenn Sie umfangreiche
Änderungen an den Dialogen durchführen wollen. Ansonsten hilft vielleicht nur ein völliges
Zurücksetzen der Dialoge, wenn Sie irgendwo etwas falsche gemacht haben.


Controls:
Dieses Programm hat viele fest eingebaute Controls, bietet aber über eine API die Möglichkeit,
weitere Custom-Controls zu verwenden oder selbst zu erstellen.

Controls werden auf dem aktuellen Dialog angelegt, in dem das besagte Control ausgewählt
und auf dem Dialog ein entsprechend großer Bereich mit der Maus aufgezogen oder indem das
Control ausgewählt und dann bei gedrückter Maustaste (Drag and Drop) rüber gezogen wird.

In den meisten Fällen öffnet dann ein Dialog der bestimmte Angaben verlangt.

Fast alle Controls sind mit Eigenschaften/Properties verbunden (was das genau ist erklären wird
ausführlich in einem anderen Artikel, zu diesem Zeitpunkt ist es einfach eine Variable, die den
Zustand oder Wert des Controls aufnimmt), haben einen Namen (Bezeichner) und erfordern
weitere Namen bzw. Texte.

Als Beispiel: Ein Eingabe/Edit-Controls benötigt einen Bezeichner wie z. B. EditControl1 und
einen Eigenschaftsnamen sowie den vordefinierten Wert dieser Eigenschaft.

Ein ListBox-Control benötigt das Gleiche, allerdings zusätzlich noch die Werte die es darstellen soll.
Letztere werden im Fenster Eigenschaften -> Einträge oder per Kontextmenü imd Dialog-Editor
angelegt oder geändert. Jedes Control hat nur eine Eigenschaft.

Wird im Setup der Wert eines Edit-Controls oder die Auswahl in einer ListBox geändert, steht der
Wert in der angebenen Eigenschaft und dieser Wert kann überall genutzt oder ausgewertet werden.


Steuerung und Auswertungen:
Ab hier kommen wir zu einem sehr komplexen Thema, welches wir hier nur grob erklären,
damit Sie einen ersten Einblick bekommen, aber auch nicht gleich mit der schieren Masse
an Möglichkeiten erdrückt werden. Wer sich allerdings mit MSI auskennt, merkt schnell das dieses
dem Verhalten des Windows Installers nachempfunden ist.



DialogInit:
Dieses sind Aufgaben, welche vor dem Anzeigen des Dialogs aufgerufen werden. Beispiele dafür
sind Custom Actions per DoAction (auch dazu später mehr) oder Eigenschaften.


Event-Mapping:
Hier wird festgelegt, welches Control wie auf bestimmte Meldungen reagieren soll bzw. wie ein
Ereignis auf etwas anderes umgewandelt werden soll.

In gibt immer Control, Ereignis und Attribute. Schlicht welches Controls
soll bei welchem Ereignis was machen.

Als Beispiel nehmen wir Dlg_InstallLanguage, dort reagiert das LanguageControl auf seine Änderung
damit, das es SetProperty ausführt und die Eigenschaft ProductLanguage ändert.


ControlEvent:
Diese Liste regelt z. B. wie auf einen Klick eines Buttons reagiert werden soll. Dies kann in einem
Aufruf eines neuen Dialogs oder Anzeigen eines weiteren Dialogs oder dem Setzen von Eigenschaften
enden.

Beispiel:
Nehmen wird Dlg_InstallType -> CustomButton, bei einem Klick werden drei Dinge
ausgeführt, deren Ablauf durch Reihenfolge festgelegt ist.
  • Das Property InstallMode erhält den Wert Custom (Eckige Klammern = SetProperty)
  • Das Property InstallModeText erhält den TextID-Platzhalter IDC_InstallButtonText1
  • Und zum Schluss wird per NewDialog Dlg_InstallFeaturesMultible aufgerufen.
NewDialog besagt, der aktuelle Dialog wird zerstört während SpawnDialog einen weiteren
Dialog aufruft und nach dessen Schließen zurückkehrt.


ControlEvent:
Diese Liste ist dafür da, Controls zu de/aktivieren, sichbar oder unsichtbar zu machen.

Beispiel: In Dlg_InstallFeaturesSingle wird Browse ausgeblendet wenn es ein
Update ist.


Eigenschaften:
Dieses Fenster ist nahezu für alle Einstellungen der Dialoge oder Controls zuständig.
Sei es Größen, Positionen, Texte, Einträge für Listen oder Radio-Buttons oder Bilder.
Was es im Einzelnen an Möglichkeiten gibt, entnehmen Sie besser der Anleitung, das würde diese
Rahmen gründlich sprengen!

Control-Liste:
Diese Liste führt alle Controls des aktuellen Dialog und zwar nach Aktivierungsreihenfolge sortiert.
Diese Reihenfolge spiegelt auch bedingt die Darstellung bzw. den Ablauf des Zeichnes der Controls
wieder. Sprich ein flächendeckendes Bild sollte oben stehen und ein Icon, welches darauf zu sehen
sein soll, in der Liste unter diesem Bild.

Diese Liste lässt sich per Drag an Drop anpassen.


Toolbar:
Oben auf der Seite finden Sie Symbole zum Ausrichten von Controls, sowie Redo/Undo aber auch
die Schalter zum Anlegen Neuer Dialoge, dem Entfernen eigener Dialoge, der Vorschau und
für den Aufruf der Dialog-Styles.
Mit freundlichen Grüßen,
AKApplications, Volker J.
Antworten