02 Statuszeile und Menu

10 Menu

Selfhtml

Hinzufügen eines Menüs.


Für das Menü werden die gleichen Units wie für die Statuszeile gebraucht.
uses
  App,      // TApplication
  Objects,  // Fensterbereich (TRect)
  Drivers,  // Hotkey
  Views,    // Ereigniss (cmQuit)
  Menus;    // Statuszeile
Für ein Menu muss man InitMenuBar vererben.
type
  TMyApp = object(TApplication)
    procedure InitStatusLine; virtual;   // Statuszeile
    procedure InitMenuBar; virtual;      // Menü
  end;
Das Menü erzeugen, das Beispiel hat nur eine einziger Menüpunkt, Beenden.
Beim Menü sind die Zeichen die mit ~x~ hervorgehoben sind nicht nur Optischen, sonder auch funktionell.
Zum beenden, kann man auch [Alt+s], [b] drücken.
Es gibt auch direkte HotKey auf die Menüpunkte, hier im Beipiel ist die [Alt+x] für beenden.
Dieses überschneidet sich hier zufällig mit [Alt+x] von der Statuszeile, aber dies ist egal.
Der Aufbau der Menüerzeugung ist ähnlich der Statuszeile.
Beim letzten Menüpunkt kommt immer ein nil.
  procedure TMyApp.InitMenuBar;
  var
    Rect: TRect;              // Rechteck für die Memüzeile Position.
  begin
    GetExtent(Rect);
    Rect.B.Y := Rect.A.Y + 1; // Position des Menüs, auf oberste Zeile der App setzen.

    MenuBar := New(PMenuBar, Init(Rect, NewMenu(
      NewSubMenu('~D~atei', hcNoContext, NewMenu(
      NewItem('~B~eenden', 'Alt-X', kbAltX, cmQuit, hcNoContext,
      nil)), nil))));
  end;



zurück