Ein Optionsmenü ist ein Menü mit einem Text und einer CheckBox, deren Wert zwischen den zwei zwei Zuständen ☑ (aktiviert) und ☐ (de-aktiviert) umgeschaltet werden kann. Um ein Menü mit dieser Eigenschaft zu realisieren, müssen Sie die Checked-Eigenschaft eines Menüs benutzen. Sie können diese Eigenschaft im Menüeditor oder im Quelltext setzen. Die Checked-Eigenschaft eines Menüs korrespondiert mit der Toggle-Eigenschaft.
Die Eigenschaft Menu.Checked ist ein Synonym für Menu.Value und zeigt an, ob das Häkchen ☑ vor dem Menü-Text angezeigt wird oder nicht ☐. Sie kontrolliert jedoch in keiner Weise das Verhalten des Optionsmenüs! Ist Menu.Toggle gesetzt, dann wird Menu.Checked automatisch invertiert, wenn das Optionsmenü angeklickt wird.
In einem Programm, das Bilder lädt und anzeigt wollen Sie dem Benutzer u.a. die Möglichkeit geben, das Bild zu editieren. Dazu erzeugen Sie zum Beispiel einen (Unter-)Menüpunkt mnu21AllowedEdit mit der Beschriftung „Bild-Bearbeitung“ in einem Menü mnuMenu2 mit der Beschriftung „Extras“:
Public Sub CreateAndShowMenus() … '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mnuMenu2 = New Menu(FMain, False) ' Menü-Leiste wird angezeigt mnuMenu2.Caption = "Extras" mnu21AllowedEdit = New Menu(mnuMenu2) As "mnuAllowedEdit" mnu21AllowedEdit.Caption = "Bild-Bearbeitung" mnu21AllowedEdit.Visible = True mnu21AllowedEdit.Toggle = True mnu21AllowedEdit.Checked = False '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … End ' CreateAndShowMenus()
Abbildung 13.3.1.1.1: Checkbox de-aktiviert – Bildbearbeitung nicht erlaubt (Starteinstellung)
[1] Public Sub mnuAllowedEdit_Click() [2] [3] If bOpenImage = True Then [4] MM.mnu12Edit.Enabled = mnu21AllowedEdit.Checked [5] Endif ' bOpenImage = True ? [6] [7] End ' mnuAllowedEdit_Click()
Abbildung 13.3.1.1.2: Checkbox aktiviert – Bildbearbeitung zugelassen
Das Beispiel 2 bezieht sich auf den Editor 'Notepad' aus der Beispielsammlung von Gambas. Im Editor können Sie den Zeilenumbruch in der Text anzeigenden Komponente TextArea ein- und ausschalten. Im Menüeditor ist die Eigenschaft mnuWrap.Checked=False und mnuWrap.Toggle nicht gesetzt. Deshalb müssen Sie die Umschaltung der Checkbox-Zustände wie in der Zeile 3 selbst vornehmen:
[1] Public Sub mnuWrap_Click() [2] [3] mnuWrap.Checked = Not mnuWrap.Checked [4] txtNotePad.Wrap = mnuWrap.Checked [5] [6] End ' mnuWrap_Click()
Abbildung 13.3.1.2.1: Checkbox ist beim Programmstart aktiviert
Abbildung 13.3.1.2.2: Checkbox de-aktiviert – Zeilenumbruch kann aktiviert werden
Die Anzeige eines Icon im Menü-Eintrag 'Zeilenumbruch' einerseits und die Anzeige einer aktivierten Checkbox ☑ gelingen nur dann, wenn Sie als Graphical User Interface entweder die QT/QTK+ Wechselkomponente (gb.gui) oder die GTK+ Komponente einsetzen. Der Einsatz der QT4-Komponente erzeugt einen Fehler bei der Anzeige des vorgesehenen Icons.
Artikel