                                  - TOC-   1 -





 GVMenus - Unit .......................................................      1
 Neues auf einen Blick  (Unit GVMenus) ................................      1
 dfDisabled - Konstante (Unit GVMenus) ................................      2
 dfMenuCheck - Konstante (Unit GVMenus) ...............................      2
 dfRadio - Konstante (Unit GVMenus) ...................................      2
 dfXXXXXXX - Konstanten (Unit GVMenus) ................................      2
 dfBitmap - Konstante (Unit GVMenus) ..................................      3
 dfCheckState - Konstante (Unit GVMenus) ..............................      3
 NewBitmap - Funktion (Unit GVMenus) ..................................      4
 NewBmpSubmenu - Funktion (Unit GVMenus) ..............................      4
 dfByCommand - Konstante (Unit GVMenus) ...............................      4
 dfByPosition - Konstante (Unit GVMenus) ..............................      4
 LookUpMenu - Funktion  (Unit GVMenus) ................................      5
 NewBmpCheckItem - Funktion (Unit GVMenus) ............................      5
 NewCheckItem - Funktion (Unit GVMenus) ...............................      5
 ChangeMenuState - Funktion (Unit GVMenus) ............................      6
 GetMenuState - Funktion (Unit GVMenus) ...............................      6
 SetMenuState - Funktion  (Unit GVMenus) ..............................      6
 TMenuItem - Record (Unit GVMenus) ....................................      6
 TMenuView - Objekt (Unit GVMenus) ....................................      7
 TMenuBar.DrawItem - Methode ..........................................      8
 TMenuView.DrawItem - Methode .........................................      8
 TMenuView.IsBar - Methode ............................................      8
 TMenuBar - Objekt (Unit GVMenus) .....................................      8
 TMenuBox.DrawItem - Methode ..........................................      9
 TMenuBar.IsBar - Methode .............................................      9
 TMenuBox - Objekt (Unit GVMenus) .....................................      9
 TMenuPopup.Execute - Methode .........................................     10
 TMenuPopup - Objekt (Unit GVMenus) ...................................     10
 TStatusLine - Objekt (Unit GVMenus) ..................................     10



























                                  - TOC-   1 -
                                    -    1 -






GVMenus - Unit
 

GVMenus ist eine Turbo-Pascal Unit und ist Teil des Graphics Vision
Paketes.
GVMenus stellt die Mens und die Statuszeile von GV bereit.

Die Objekte sind nahezu kompatibel mit TV. Das heit, Sie knnen GVMenus genauso
benutzen, wie von TV gewohnt. Es gibt aber einige Erweiterungen, die hier
dokumentiert werden. Alle anderen Routinen bzw. Objektmethoden sind durch
Turbo Vision dokumentiert.

Neues auf einen Blick

 Variablen und Konstanten:

  dfXXXXXXX

 Prozeduren und Funktionen:

  NewBitmap
  NewBmpSubmenu
  NewCheckItem
  NewBmpCheckItem

  NewItem      (siehe Pascal-Dokumentation)
  NewLine      (siehe Pascal-Dokumentation)
  NewSubMenu   (siehe Pascal-Dokumentation)

  NewMenu      (siehe Pascal-Dokumentation)
  DisposeMenu  (siehe Pascal-Dokumentation)

  LookUpMenu
  SetMenuState
  ChangeMenuState
  GetMenuState

 Records und Objekte:

  TMenu        (siehe Pascal-Dokumentation)
  TMenuItem
  TStatusItem  (siehe Pascal-Dokumentation)
  TStatusDef   (siehe Pascal-Dokumentation)
  TMenuView
  TMenuBar
  TMenuBox
  TMenuPopup
  TStatusLine

Neues auf einen Blick  (Unit GVMenus)
 

1) In Graphics Vision ist mglich, Bitmaps als Meneintrge zu verwenden.
siehe: NewBitmap       bzw.    NewBmpSubmenu

2) Das aus Windows bekannte Hkchen neben einzelnen Eintrgen ist nun auch



                  gvmenus, Page #   1   Date 22-7-1996 Monday
                                    -    2 -





hier verfgbar. (siehe NewCheckItem)

3) Bei TStatusLine kann man Steuerzeichen fr Schriftarten angeben.

dfXXXXXXX - Konstanten (Unit GVMenus)
 

Hierbei handelt es sich um Flags fr das Feld Disabled eines TMenuItem
Records.

 siehe auch:
   dfDisabled
   dfMenuCheck
   dfRadio
   dfCheckState
   dfBitmap

dfDisabled - Konstante (Unit GVMenus)
 

 Deklaration:
   dfDisabled   = $01;

 Funktion:
dfDisabled ist ein Flag fr das Disabled Feld eines TMenuItem - Records.
Ist es gesetzt, dann ist der Meneintrag inaktiv. Dies entspricht dem Fall,
da in TV das Disabled-Feld den Wert true annimmt.

 siehe auch:
   dfXXXXXXX
   dfMenuCheck
   dfRadio
   dfCheckState
   dfBitmap

dfMenuCheck - Konstante (Unit GVMenus)
 

 Deklaration:
   dfMenuCheck   = $02;

 Funktion:
dfMenuCheck ist ein Flag fr das Disabled Feld eines TMenuItem - Records.
Ist es gesetzt, ist der entsprechende Meneintrag befhigt, mit dem aus Windows
bekannte Haken zu operieren. Der Meneintrag funktioniert dann wie ein Eintrag
eines TCheckBoxes Objektes.

 siehe auch:
   dfXXXXXXX
   dfDisabled
   dfRadio
   dfCheckState
   dfBitmap




                  gvmenus, Page #   2   Date 22-7-1996 Monday
                                    -    3 -





dfRadio - Konstante (Unit GVMenus)
 

 Deklaration:
   dfRadio = $04;

 Funktion:
dfRadio ist ein Flag fr das Disabled Feld eines TMenuItem - Records.
Wenn dieses Flag zustzlich zu dfMenuCheck gesetzt ist, dann werden alle
Eintrge eines Mens (Untermens werden nicht bercksichtigt) bei denen dieses
Flag gesetzt ist hnlich wie die Eintrge in einem TRadioButton Objekt behandelt,
d.h. der aus Windows bekannte Haken wird jeweils nur neben einem Meneintrag
dargestellt.

 siehe auch:
   dfXXXXXXX
   dfDisabled
   dfCheckState
   dfBitmap

dfCheckState - Konstante (Unit GVMenus)
 

 Deklaration:
   dfCheckState = $08;

 Funktion:
dfCheckState ist ein Flag fr das Disabled Feld eines TMenuItem - Records.
Das Flag gibt an, ob der Eintrag gerade selektiert (Haken ist sichtbar).

 siehe auch:
   dfXXXXXXX
   dfDisabled
   dfMenuCheck
   dfRadio
   dfBitmap

dfBitmap - Konstante (Unit GVMenus)
 

 Deklaration:
   dfBitmap = $10;

 Funktion:
dfBitmap ist ein Flag fr das Disabled Feld eines TMenuItem - Records.
Wenn dieses Flag gesetzt ist, so wird das Feld Name des entsprechenden
TMenuItem Records als ein Zeiger auf eine mit VGAMem.GetImage (s.d.) erzeugte
Bitmap interpretiert sonst wie gewhnlich als Zeiger auf einen String.

 siehe auch:
   dfXXXXXXX
   dfDisabled
   dfMenuCheck
   dfRadio



                  gvmenus, Page #   3   Date 22-7-1996 Monday
                                    -    4 -





   dfCheckState

dfByPosition - Konstante (Unit GVMenus)
 
 Deklaration:
   dfByPosition = $100;

 Funktion:

Verwenden Sie diese Konstante in:

   LookUpMenu
   SetMenuState
   ChangeMenuState
   GetMenuState

dfByCommand - Konstante (Unit GVMenus)
 
 Deklaration:
   dfByCommand = $000;

 Funktion:

Verwenden Sie diese Konstante in:

   LookUpMenu
   SetMenuState
   ChangeMenuState
   GetMenuState

NewBitmap - Funktion (Unit GVMenus)
 

 Deklaration:
   function NewBitmap(Image: Pointer; KeyCode: Word; Command: Word;
     AHelpCtx: Word; Next: PMenuItem): PMenuItem;

 Funktion:
NewBitmap erzeugt eine Menoption, die anstatt des Textes ein Image ausgibt.
Image ist ein Zeiger auf ein mit VGAMem.GetImage erzeugtes Bild.
Ansonsten ist die Funktion identisch mit NewItem. Hinweis: Beachten Sie, da
NewBitmap eine eigene Kopie der Bilddaten im Speicher anlegt. Sie mssen also
Ihr als Parameter bergebenes Image selbst aus dem Speicher entfernen.

 siehe auch:
   TMenuItem
   NewBmpSubMenu
   NewCheckItem
   NewBmpCheckItem

NewBmpSubmenu - Funktion (Unit GVMenus)
 

 Deklaration:
   function NewBmpSubMenu(Image: Pointer; AHelpCtx: Word; SubMenu: PMenu;
     Next: PMenuItem): PMenuItem;

 Funktion:
NewBmpSubmenu erzeugt eine Untermen, das anstatt des Textes ein Image
ausgibt. Image ist ein Zeiger auf eine mit VGAMem.GetImage erzeugtes Bild.



                  gvmenus, Page #   4   Date 22-7-1996 Monday
                                    -    5 -





Ansonsten ist die Funktion identisch mit NewSubMenu. Hinweis: Beachten Sie,
da NewBitmap eine eigene Kopie der Bilddatenim Speicher anlegt. Sie mssen
also Ihr als Parameter bergebenes Image selbst aus dem Speicher entfernen.

 siehe auch:
   TMenuItem
   NewBitmap
   NewCheckItem
   NewBmpCheckItem

NewCheckItem - Funktion (Unit GVMenus)
 

 Deklaration:
   function NewCheckItem(Name, Param: TMenuStr; KeyCode, Command,
     AHelpCtx: Word; ADisabled: Byte; Next: PMenuItem): PMenuItem;

 Funktion:
NewCheckItem ermglicht es Ihnen, das Disabled Feld eines TMenuItem - Records
mit einem Startwert zu belegen. Benutzen Sie einfach die dfXXXXXXX - Konstanten.
Wollen Sie z.B. eine selektierbare Menoption, bei der der Haken bereits zu
sehen ist, generieren, so schreiben Sie bei der Erzeugung Ihres Mens
folgendes:

  ....
  NewCheckItem ('~M~yname','Ctrl-F9',kbCtrlF9,cmRun,hcSth,
    dfMenuCheck+dfCheckState,
  ....)

 siehe auch:
   TMenuItem
   NewBitmap
   NewBmpSubMenu
   NewBmpCheckItem

NewBmpCheckItem - Funktion (Unit GVMenus)
 

 Deklaration:
   function NewBmpCheckItem(Image: pointer; KeyCode, Command,
     AHelpCtx: Word; ADisabled: Byte; Next: PMenuItem): PMenuItem;

 Funktion:
NewBmpCheckItem ermglicht es Ihnen, das Disabled Feld eines TMenuItem-Records
mit einem Startwert zu belegen. Benutzen Sie einfach die dfXXXXXXX - Konstanten.
Im Unterschied zu NewCheckItem wird nicht ein Text, sondern ein
Image ausgegeben.

 siehe auch:
   TMenuItem
   NewBitmap
   NewCheckItem
   NewBmpSubMenu




                  gvmenus, Page #   5   Date 22-7-1996 Monday
                                    -    6 -





LookUpMenu - Funktion  (Unit GVMenus)
 
 Deklaration:
function LookUpMenu(Menu: PMenu; idCheckItem: Word; Flags: Word): PMenuItem;

 Funktion:

Diese Funktion durchsucht eine TMenu-Datenstruktur nach einem
Eintrag. Der Parameter Flags steuert, ob idCheckItem die
laufende Nummer im Men (dfByPosition) oder
das zugehrige Kommando (dfByCommand) angibt.
Es wird der passende Eintrag zurckgegeben oder NIL, wenn kein
solcher Eintrag existiert.

SetMenuState - Funktion  (Unit GVMenus)
 
 Deklaration:
function SetMenuState(Menu: PMenu; idCheckItem: Word; Check: Word): Word;

 Funktion:

Diese Funktion ermglicht das Setzen des Disabled-Felds eines
Meneintrags. Der Parameter Check setzt sich zusammen aus
einem dfByPosition/dfByCommand-Flag
(welches fr LookUpMenu verwendet wird) und dem
neuen Wert fr das Disabled-Feld (dfXXXXXXX).

 Siehe auch:

  ChangeMenuState
  GetMenuState

ChangeMenuState - Funktion (Unit GVMenus)
 
 Deklaration:

  function ChangeMenuState(Menu: PMenu; idCheckItem: Word;
    Check: Word; Enable: Boolean): Word;

 Funktion:

Diese Funktion ermglicht das Verndern des Disabled-Felds eines
Meneintrags. Der Parameter Check setzt sich zusammen aus
einem dfByPosition/dfByCommand-Flag
(welches fr LookUpMenu verwendet wird) und einer
Maske fr das Disabled-Feld (dfXXXXXXX).
Ist Enable true, dann werden die Flags in der Maske gesetzt, sonst
gelscht.

 Siehe auch:

  SetMenuState
  GetMenuState

GetMenuState - Funktion (Unit GVMenus)
 
 Deklaration:
function GetMenuState(Menu: PMenu; idCheckItem: Word; Flags: Word): Word;

 Funktion:

Diese Funktion erlaubt das Auslesen des Disabled-Felds eines Meneintrags.
Dazu wird LookUpMenu verwendet. Parameter s.d.

 Siehe auch:

  SetMenuState
  ChangeMenuState



                  gvmenus, Page #   6   Date 22-7-1996 Monday
                                    -    7 -






TMenuItem - Record (Unit GVMenus)
 

 Deklaration:
   TMenuItem = record
    Next: PMenuItem;
    Name: Pointer;              { Sehen Sie hier ... }
    Command: Word;
    Disabled: Byte;             { .... und hier !    }
    KeyCode: Word;
    HelpCtx: Word;
    case Integer of
      0: (Param: PString);
      1: (SubMenu: PMenu);
  end;

 Funktion:
Der Record ist in GV ein wenig verndert, um die erweiterten Funktionen des
Mens zu untersttzen.
Im einzelnen betrifft dies die Felder:

Name: Um sowohl Bitmaps als auch Strings im Men verwenden zu knnen,
ist Name in GV ein untypisierter Pointer.

Disabled: Hat in GV neben der Aufgabe festzulegen, ob die Menoption gerade
inaktiv ist noch einige zustzliche Aufgaben (siehe dfXXXXXXX).

TMenuView - Objekt (Unit GVMenus)
 

TMenuView ist ein abtrakter Objekttyp und
gemeinsamer Vorfahre der Objekte TMenuBar und
TMenuBox, die Menleisten und Menfenster zur
Verfgung stellen.

 Felder:
   ParentMenu   (siehe Pascal-Dokumentation)
   Menu         (siehe Pascal-Dokumentation)
   Current      (siehe Pascal-Dokumentation)

 Methoden:
   DrawItem
   IsBar

   Init         (siehe Pascal-Dokumentation)
   Load         (siehe Pascal-Dokumentation)
   Execute      (siehe Pascal-Dokumentation)
   FindItem     (siehe Pascal-Dokumentation)
   GetItemRect  (siehe Pascal-Dokumentation)
   GetHelpCtx   (siehe Pascal-Dokumentation)
   GetPalette   (siehe Pascal-Dokumentation)
   HandleEvent  (siehe Pascal-Dokumentation)
   HotKey       (siehe Pascal-Dokumentation)



                  gvmenus, Page #   7   Date 22-7-1996 Monday
                                    -    8 -





   NewSubView   (siehe Pascal-Dokumentation)
   Store        (siehe Pascal-Dokumentation)

TMenuView.DrawItem - Methode
 

 Deklaration:
   procedure DrawItem (Item: PMenuItem); virtual;

 Funktion:
DrawItem stellt den Meneintrag, auf den Item zeigt auf dem Bildschirm dar.
Die Methode sollte von GV-Nutzern nicht aufgerufen werden.
In TMenuView ist DrawItem eine abstrakte Methode. Erst die Nachkommen verleihen
DrawItem Funktionalitt.

Das TMenuView-Objekt von Turbo Vision hat keine DrawItem-Methode.
Bei jeder Statusvernderung des Mens zeichnet es das gesamte Men
neu. Graphics Vision hingegen stellt mittels DrawItem nur die
vernderten Eintrge neu dar.

 siehe auch:
   TMenuBar.DrawItem
   TMenuBox.DrawItem

TMenuView.IsBar - Methode
 
 Deklaration:
function IsBar: Boolean; virtual;

 Funktion:

Diese Methode ersetzt das fr den Graphikmodus ungeeignete
Kalkl von Turbo Vision zum Erkennen einer Menleiste.

Diese Implementation gibt stets false zurck. Die Methode
wird in TMenuBar berschrieben.

TMenuBar - Objekt (Unit GVMenus)
 

TMenuBar stellt eine Menzeile bereit. Sie ist kompatibel mir Turbo Vision.
Es existiert lediglich eine zustzliche Methode, die aber keine Auswirkung
fr Sie als Nutzer hat.

Methoden:
  DrawItem
  IsBar

  Init         (siehe Pascal-Dokumentation)
  Done         (siehe Pascal-Dokumentation)
  Draw         (siehe Pascal-Dokumentation)
  GetItemRect  (siehe Pascal-Dokumentation)

TMenuBar.DrawItem - Methode
 

 Deklaration:



                  gvmenus, Page #   8   Date 22-7-1996 Monday
                                    -    9 -





   procedure DrawItem (Item: PMenuItem); virtual;

 Funktion:
DrawItem stellt den Meneintrag, auf den Item zeigt auf dem Bildschirm dar.
Die Methode sollte von GV-Nutzern nicht aufgerufen werden.
In TMenuBar erscheint ein solcher Eintrag als Text- oder Grafikausgabe in
einer Zeile.

 siehe auch:
   TMenuView.DrawItem
   TMenuBox.DrawItem

TMenuBar.IsBar - Methode
 
 Deklaration:
function IsBar: Boolean; virtual;

 Funktion:

Diese Methode ersetzt das fr den Graphikmodus ungeeignete
Kalkl von Turbo Vision zum Erkennen einer Menleiste.

Diese Implementation gibt stets true zurck.

TMenuBox - Objekt (Unit GVMenus)
 

TMenuBox stellt ein Pulldown-Men in GV bereit. Neben den aus TV bekannten
Funktionen untersttzt TMenuBox in GV auch Bitmaps und selektierbare Meneintrge.


Methoden:
  DrawItem

  Init         (siehe Pascal-Dokumentation)
  Draw         (siehe Pascal-Dokumentation)
  GetItemRect  (siehe Pascal-Dokumentation)

siehe auch:
  NewBitmap
  NewCheckItem

TMenuBox.DrawItem - Methode
 

 Deklaration:
   procedure DrawItem (Item: PMenuItem); virtual;

 Funktion:
DrawItem stellt den Meneintrag, auf den Item zeigt auf dem Bildschirm dar.
Die Methode sollte von GV-Nutzern nicht aufgerufen werden.
In TMenuBox erscheint ein solcher Eintrag als Text- oder Grafikausgabe innerhalb
eines Pulldownmens. Die Methode untersttzt alle Standard - Turbo - Vision -
und alle zustzlichen GV - Features.

 siehe auch:
   TMenuView.DrawItem



                  gvmenus, Page #   9   Date 22-7-1996 Monday
                                    -   10 -





   TMenuBar.DrawItem

TMenuPopup - Objekt (Unit GVMenus)
 
TMenuPopup ist ein spezielles Menfenster, das fr sich allein steht, also
nicht mit einer Menleiste oder einem anderen Menfenster verbunden ist. Der
einzigen Unterschiede zwischen einem TMenuPopup-Objekt bestehen in einem
vereinfachten Konstruktor und  der HandleEvent-Methode, die alle
Tastaturereignisse abarbeitet, bevor sie sie an die geerbte Methode
HandleEvent weiterreicht.

TMenuPopup weist einen Unterschied zu Turbo Vision auf:
Die Execute-Methode gibt nicht nur das Kommando zurck, sondern
legt es auch mit PutEvent in die Ereignisschlange.

Methoden:
  Execute

  Init  (siehe Pascal-Dokumentation)
  HandleEvent  (siehe Pascal-Dokumentation)


TMenuPopup.Execute - Methode
 
 Deklaration:
function Execute: Word; virtual;

 Funktion:

Zustzlich zu der Funktionalitt von TMenuView.Execute
legt diese Methode das ausgelste Kommando mittels PutEvent
in die Ereignisschlange.

 siehe auch:
   Menu               (siehe Pascal-Dokumentation)
   Execute,TMenuView  (siehe Pascal-Dokumentation)

TStatusLine - Objekt (Unit GVMenus)
 

TStatusLine stellt eine Statuszeile in GV bereit. Es werden alle TV - Features
auch in GV untersttzt. Zustzlich knnen fr alle Texte der Statuszeile
Steuerzeichen fr die verwendete Schriftart angegeben werden. Jeweils das
erste Zeichen des Textes eines StatusHints bzw. eines StatusItems (erzeugt
ber NewStatusKey) steht fr die Textart. Gltige Zeichen sind:

  #0 - ftSystem wird fr den folgenden Text verwendet
  #1 - ftSansSerif wird fr den folgenden Text verwendet
  #2 - ftMonoSpace wird fr den folgenden Text verwendet

Wird ein anderes Zeichen benutzt, so wird automatisch ftSystem verwendet.

Wollen Sie z.B. fr einen Statuszeileneintrag die Schriftart ftSanserif statt
ftSystem benutzen so schreiben Sie:


 ...



                  gvmenus, Page #  10   Date 22-7-1996 Monday
                                    -   11 -





 NewStatusKey(#1'Dieser ~Text~ ist in ftSansSerif',kbNoKey,cmSansSerif,
 ...


Fr die kontextsensitiven Hinweise in der Statuszeile gilt dies entsprechend.

 Felder:
   Items        (siehe Pascal-Dokumentation)
   Defs         (siehe Pascal-Dokumentation)

 Methoden:
   Init         (siehe Pascal-Dokumentation)
   Load         (siehe Pascal-Dokumentation)
   Done         (siehe Pascal-Dokumentation)
   Draw         (siehe Pascal-Dokumentation)
   GetPalette   (siehe Pascal-Dokumentation)
   HandleEvent  (siehe Pascal-Dokumentation)
   Hint         (siehe Pascal-Dokumentation)
   Store        (siehe Pascal-Dokumentation)
   Update       (siehe Pascal-Dokumentation)

 siehe auch:
   ftXXXXXXX


































                  gvmenus, Page #  11   Date 22-7-1996 Monday
