24 menubox (Menübox)

Fast jedem Objekt kann genau ein aktives Menü zugeordnet werden. Da das Objekt menubox nicht direkt als Kind an das Objekt gehängt wird, muss die Definition mit dem Schlüsselwort menu anstatt child eingeleitet werden. Nur wenn das Menü zu einem Fenster gehören soll, muss dieses über child an das Fenster gebunden werden.

Die eigentliche Definition eines Menüs erfolgt dann anschließend über das Keyword menubox, gefolgt von einem Identifikator. Zwischen den anschließenden geschweiften Klammern folgt dann die Definition der in dem Menü enthaltenen Menüeinträgen und Menüseparatoren sowie den Attributen des Menüs.

Definition

{ export | reexport } { model } menubox { <Bezeichner> }
{
  <Standardattribute>
  <Layoutattribute>
  <Textattribute>
  <Objektspezifische Attribute>
}

Ereignisse

extevent

open

Kinder

document

menubox

menuitem

menusep

record

transformer

Vater

canvas

checkbox

dialog

edittext

groupbox

image

layoutbox

listbox

menubox

module

notepage

poptext

pushbutton

radiobutton

rectangle

scrollbar

spinbox

splitbox

statictext

tablefield

toolbar

treeview

window

Menü

keins

Anmerkung

Dem Objekt Fenster darf mehr als ein Menü zugeordnet werden; es muss daher über das Schlüsselwort child in die Menüleiste des Fensters eingehängt werden.

Die Menüdefinition für Objekte in Fenstern kann mit Hilfe des Attributs .menu gemacht werden.

Einer Menübox können Menüboxen, Menüeinträge und Menüseparatoren als Kinder in beliebiger Anzahl über das Schlüsselwort child zugeordnet werden.

Wenn das open Ereignis des menubox-Objekts verwendet wird, sollten auf keinen Fall die Vaterobjekte des menubox-Objekts in einer Regel zerstört werden, da es sonst zu ungewollten Effekten kommen kann. Besonders gefährlich sind hier die open-Ereignisse von menubox-Objekten, die Kind eines anderen menubox-Objekts oder eines window-Objekts sind.

24.1 Attribute

.bgc

.child[integer]

.childcount

.class

.control

.dialog

.document[integer]

.external

.external[integer]

.fgc

.firstchild

.firstmenu

.firstrecord

.font

.groupbox

.help

.helpmenu

.index

.label

.lastchild

.lastmenu

.lastrecord

.layoutbox

.mapped

.member[integer]

.membercount

.menucount

.model

.notepage

options[enum]

.order

.parent

.real_sensitive

.real_visible

.record[integer]

.recordcount

.scope

.sensitive

.statushelp

.title

.userdata

.visible

.window

24.2 Spezifische Attribute

Attribut Beschreibung

.helpmenu

Definiert, dass die Menübox im Fenster rechts ausgerichtet wird.

options[enum]

Mit diesem Attribut kann die Menübox unter Motif auch als Tearoff-Menü eingestellt werden.

Index: opt_enable_tearoff

.order

Definiert die Reihenfolge relativ zu anderen Menüboxen bzw. Menüeinträgen.

.title

Angezeigter Text bei einem Fenstermenü.

24.3 Kontextmenüs (Popup-Menüs) unter Microsoft Windows

Wenn ein Kontextmenü geöffnet wird, erhält das Objekt, an welchem das Kontextmenü (Popup-Menü) definiert ist, den Tastaturfokus. Ist dieses Objekt ein Gruppierungsobjekt (beispielsweise ein window- oder groupbox-Objekt), dann wird der Tastaturfokus auf das erste Kindobjekt, welches den Fokus erhalten kann, gesetzt. Allerdings wird der Tastaturfokus nur umgesetzt, wenn das Objekt, an dem das Kontextmenü definiert ist, oder eines der direkten oder indirekten Kindobjekte nicht schon den Tastaturfokus besitzen.

Anmerkungen

24.4 Kontextmenüs (Popup-Menüs) unter Motif

Ab Motif 2.1 ist es Standard, dass sich Popup-Menüs mit Mnemonics automatisch öffnen, wenn ein Mnemonic-Zeichen eingegeben wird. Bei Objekten mit Texteingabe kann dieses Verhalten allerdings die Texteingabe stören.

Ab IDM-Version A.05.02.f4 öffnet sich bei Edittexten mit einem Popup-Menü, in dem Mnemonics definiert sind, das Popup-Menü nicht mehr automatisch bei Eingabe eines Mnemonic-Zeichens.

Damit verhält sich der Edittext wie andere Objekte mit Texteingabe. Bei fokussierbaren Objekten ohne Texteingabe, wie Pushbutton, Checkbox, Radiobutton, Image, Scrollbar und Spinbox mit Statictext, wird das Popup-Menü bei Eingabe eines Mnemonic-Zeichens automatisch geöffnet.

Anmerkungen

24.5 Beispiel

Fenster mit Menübar:

window Hauptfenster

{

  child menubox Menue_1

  {

    .title "Start Menu";

  }

 

  child menubox Menue_2

  {

    .title "File";

  }

 

  child menubox Popup

  {

    .title "3. Menue";

 

    child menuitem Menue_3

    {

      .text "Popup 1";

    }

 

    child menuitem Menue_4

    {

      .text "Popup 2";

    }

  }

}

Abbildung 16-26: Fenster mit Menüleiste

Anmerkung

Soll in einem Menü ein weiteres Menü (Kaskadenmenü) enthalten sein, so muss dieses über das Schlüsselwort menubox als Kind des übergeordneten Menüs definiert werden.

child menubox Pulldown

{

  .title "Dateibearbeitung";

  .sensitive true;

  .visible true;

 

  child menuitem Laden

  {

    .text "Laden";

    .visible true;

  }

 

  child menubox Sichern /* Cascade menu */

  {

    .title "Sichern";

 

    child menuitem Sichern_unter

    {

      .text "Sichern unter";

    }

 

    child menuitem Sichern

    {

      .text "mit aktuellem Namen";

    }

  }

}

Abbildung 16-27: Kaskadenmenü