DEFINE PAD-Befehl
Erstellt einen Menütitel (Menüblock, Pad) für eine benutzerdefinierte Menüleiste oder für die Visual FoxPro-Systemmenüleiste.
DEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText
[AT nRow, nColumn] [BEFORE MenuName2 | AFTER MenuName3]
[NEGOTIATE cContainerPosition [, cObjectPosition]]
[FONT cFontName [, nFontSize]] [STYLE cFontStyle]
[KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter]
[SKIP [FOR lExpression]] [MESSAGE cMessageText]
[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]
Parameter
MenuTitle1
Gibt den zu erstellenden Menütitel an. Mit Hilfe des Titels können Sie das Menü in anderen Befehlen und Funktionen ansprechen.OF MenuBarName
Gibt den Namen der Menüleiste an, in der Sie den Menütitel anordnen.PROMPT cMenuTitleText
Gibt den Text an, der als Titel des Menüs angezeigt wird.Sie können eine Zugriffstaste definieren, indem Sie einen umgekehrten Schrägstrich und ein Kleiner als-Zeichen (\<) vor das Zeichen setzen, das Sie als Zugriffstaste verwenden möchten. Im folgenden Beispiel kann der Benutzer mit der Taste I aus dem Menü Receive den Befehl Invoices und mit der Taste Q den Befehl Inquiry wählen:
DEFINE MENU mnuReceive DEFINE PAD padInvoice OF mnureceive PROMPT "\<Invoices" DEFINE PAD padInquire OF mnureceive PROMPT "In\<quiry" ACTIVATE MENU mnuReceive
AT nRow, nColumn
Gibt an, wo der Menütitel auf der Menüleiste angezeigt wird. nRow, nColumn sind die Koordinaten des linken Randes des Titels im Visual FoxPro-Hauptfenster oder in einem benutzerdefinierten Fenster.Wenn Sie die AT-Klausel nicht angeben, wird der linke Rand des ersten Menütitels in Zeile 0 des Visual FoxPro-Hauptfensters oder eines benutzerdefinierten Fensters angeordnet, der nächste Titel dann rechts neben dem ersten in Zeile 0 usw.
Anmerkung Sie können mit AT nicht die Position von Menütiteln in Menüleisten einbeziehen, die mit der BAR-Klausel von DEFINE MENU erstellt werden.
BEFORE MenuName2
Ordnet den Menütitel in der Menüleiste links neben dem mit MenuName2 angegebenen Titel an. Die Reihenfolge, in der über die Tastatur auf die Menütitel zugegriffen wird, entspricht deren in der Menüleiste.AFTER MenuName3
Ordnet den Menütitel in der Menüleiste rechts neben dem mit MenuName3 angegebenen Titel an. Die Reihenfolge, in der über die Tastatur auf die Menütitel zugegriffen wird, entspricht deren Position in der Menüleiste.Sie müssen den Menütitel, den Sie in einer BEFORE- oder AFTER-Klausel angeben, zunächst erstellen. Andernfalls hängt dessen Position in der Menüleiste von der Reihenfolge ab, in der er erstellt wurde, oder sie wird durch die AT-Klausel festgelegt.
Bei Menüleisten, die ohne BAR erstellt wurden, legt BEFORE oder AFTER die Reihenfolge fest, in der über die Tastatur auf die Menütitel zugegriffen wird. Die Position eines Menütitels wird durch die AT-Klausel bestimmt.
Führen Sie die folgenden zwei Beispielprogramme aus und beachten Sie die Unterschiede in der Anordnung der Menütitel und der Zugriffsreihenfolge, wenn Menütitel mit und ohne AT-Klausel definiert werden:
** Program Example 1 without ATs ** DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' DEFINE PAD padThree OF mnuBefAft PROMPT '3333' DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo ACTIVATE MENU mnuBefAft
** Program Example 2 with ATs ** DEFINE MENU mnuBefAft DEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5 DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15 DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25 DEFINE PAD padFour OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35 WAIT WINDOW 'Press ESC to erase menu' NOWAIT ACTIVATE MENU mnuBefAft
NEGOTIATE cContainerPosition [, cObjectPosition]
cContainerPosition gibt die Position an, die der Menütitel in der Visual FoxPro-Menüleiste einnehmen soll, wenn OLE-Objekte für ein ActiveX-Steuerelement, das in einem Visual FoxPro Formular enthalten ist, visuell bearbeitet werden.cObjectPosition gibt die Position an, die der Menütitel in der Menüleiste des Hosts eines aktiven Dokuments (Active Document) einnehmen soll.
Folgende Einstellungen für cContainerPosition sind möglich:
Einstellung Beschreibung NONE Der Menütitel wird nicht angezeigt. LEFT Der Menütitel wird links von der Dateigruppe angezeigt MIDDLE Der Menütitel wird links von der Containergruppe hinter dem Menü Bearbeiten angezeigt. RIGHT Der Menütitel wird links von der Fenstergruppe angezeigt. Folgende Einstellungen für cObjectPosition sind möglich:
Einstellung Beschreibung NONE Der Menütitel wird nicht angezeigt. LEFT Der Menütitel wird links von der Dateigruppe angezeigt. MIDDLE Der Menütitel wird rechts von der Containergruppe nach dem Menü Bearbeiten angezeigt. RIGHT Der Menütitel wird auf dem Menü Hilfe angeordnet. Beachten Sie, dass es nur einen RIGHT-Menütitel in einer Active Document-Anwendung geben kann. Sind mehr als ein RIGHT-Menütitel angegeben, werden alle Menütitel links vom Menü Hilfe angeordnet.
Wenn Sie keine NEGOTIATE-Klausel angeben, wird der Menütitel bei der visuellen Bearbeitung von OLE-Objekten aus der Menüleiste entfernt; NONE ist sowohl die Standardeinstellung für cContainerPosition als auch für cObjectPosition.
FONT cFontName [, nFontSize]
Gibt eine Schriftart für den Menütitel an. cFontName gibt den Namen der Schriftart und nFontSize die Größe in Punkt (pt) an. Mit dem folgenden Befehl wird z. B. ein Menütitel mit der Schriftart "Courier" und einem Schriftgrad von 12 pt erstellt:DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12
Ist die angegebene Schriftart nicht verfügbar, wird eine Schrift mit ähnlichen Schriftmerkmalen verwendet. Wurde die FONT-Klausel einbezogen, aber nicht mit nFontSize die Punktgröße festgelegt, wird eine 10-pt-Schrift verwendet.
Die FONT-Klausel wird bei Menütiteln ignoriert, die zum Visual FoxPro-Systemmenü _MSYSMENU hinzugefügt werden. Beachten Sie bitte, dass der Menü-Designer mit dem Visual FoxPro-Systemmenü arbeitet.
STYLE cFontStyle
Gibt einen Schriftstil für den Menütitel an. Wird die STYLE-Klausel nicht angegeben oder ist der angegebene Schriftstil nicht verfügbar, wird der Schriftstil "Normal" verwendet.Mit cFontStyle können Sie die folgenden Schriftstile angeben:
Zeichen Schriftstil B Fett I Kursiv N Normal Q Undurchsichtig - Durchgestrichen T Transparent U Unterstrichen Sie können durch Einbeziehen mehrerer Zeichen Schriftstile kombinieren. Mit dem folgenden Befehl geben Sie z. B. "Fett Kursiv" an:
DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'
Die STYLE-Klausel wird bei Menütiteln ignoriert, die zum Visual FoxPro-Systemmenü _MSYSMENU hinzugefügt werden. Beachten Sie bitte, dass der Menü-Designer mit dem Visual FoxPro-Systemmenü arbeitet.
KEY KeyLabel [, cKeyText]
Gibt eine Zugriffstaste bzw. -tastenkombination für den Menütitel an. Informationen zu einer Liste mit den verfügbaren Tasten, Tastenkombinationen und den Tastennamen finden Sie unter ON KEY LABEL-Befehl.Anmerkung Ist bereits ein Tastaturmakro mit demselben Tastennamen definiert, hat das Makro Vorrang, so dass Sie den Menütitel nicht mit der angegebenen Taste oder Tastenkombination wählen können.
In Menüleisten, die ohne die BAR-Klausel erstellt wurden, wird der Tastenname rechts neben dem jeweiligen Menütitel angezeigt. Der Tastenname wird nicht in Menüleisten angezeigt, die mit der BAR-Klausel erstellt wurden. Dies gilt auch für Menütitel der Visual FoxPro-Systemmenüleiste.
Geben Sie cKeyText an, um den Tastennamen durch eigenen Text zu ersetzen. Sie können als Parameter cKeyText jedes beliebige Zeichen verwenden. So können Sie z. B. den Text "^B" angeben, der anstelle des Tastennamens STRG+B angezeigt wird. Bei Angabe von KEY STRG+B wird der Text STRG+B im Menü neben dem Namen des Menüeintrags bzw. bei Angabe von KEY CTRL+B, "^B" der Text "^+B" im Menü angezeigt. Sie können die Anzeige eines Tastennamens unterdrücken, indem Sie für cKeyText eine leere Zeichenfolge angeben.
MARK cMarkCharacter
Gibt ein Markierungszeichen an, das links neben dem Menütitel angezeigt wird. Geben Sie MARK an, um das Standardmarkierungszeichen durch das mit cMarkCharacter angegebene Zeichen zu ersetzen. Enthält cMarkCharacter mehr als ein Zeichen, wird nur das erste angegebene Zeichen als Markierungszeichen verwendet.Das Standardmarkierungszeichen ist ein Häkchen. Die MARK-Klausel wird ignoriert und das Standardmarkierungszeichen verwendet, wenn die Menüleiste, zu der der Menütitel gehört, das Visual FoxPro-Systemmenü ist. Außerdem wird die MARK-Klausel ignoriert, wenn "FoxFont" nicht die Schriftart des Visual FoxPro-Hauptfensters oder des benutzerdefinierten Fensters ist, in dem die Menüleiste angeordnet wird, zu der der Menütitel gehört.
In DEFINE PAD angegebene Markierungszeichen setzen Markierungszeichen, die mit der MARK-Klausel von DEFINE MENU angegeben wurden, außer Kraft. Mit SET MARK OF werden Markierungszeichen ein- und ausgeblendet. Dieser Befehl kann auch zur Angabe eines Zeichens für einen einzelnen oder alle Menütitel verwendet werden.
Anmerkung Durch das Angeben eines Markierungszeichens wird der jeweilige Menütitel noch nicht markiert. Verwenden Sie deshalb SET MARK OF, um einen Menütitel mit dem von Ihnen angegebenen Zeichen zu markieren.
SKIP [FOR lExpression] Dient zur Angabe einer Bedingung.
Ergibt die Auswertung von lExpression den Wert Wahr (.T.), wird der Menütitel deaktiviert, so dass Benutzer ihn nicht mehr wählen können. Ergibt die Auswertung den Wert Falsch (.F.), wird der Menüblock aktiviert.Sie können einen Menütitel auch deaktivieren, indem Sie einen umgekehrten Schrägstrich (\) vor den Menütext setzen. Beispiel:
DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'
Der Menütitel
padPageAccts
wird abgeblendet angezeigt.Ein deaktivierter Menütitel wird angezeigt, kann aber nicht ausgewählt werden. Eine mit der MESSAGE-Klausel definierte Meldung wird dennoch angezeigt.
MESSAGE cMessageText
Zeigt eine Meldung an, wenn der Benutzer einen Menütitel auswählt. Die Meldung wird in der grafischen Statusleiste angezeigt. Wurde die grafische Statusleiste mit SET STATUS BAR OFF ausgeblendet, wird die Meldung zentriert in der letzten Zeile des Visual FoxPro-Hauptfensters angezeigt.COLOR SCHEME nSchemeNumber
Gibt die Farben für einen einzelnen Menütitel an. Dabei werden die Standardfarben oder die mit DEFINE MENU angegebenen Farben außer Kraft gesetzt.COLOR ColorPairList
Gibt die Farben für einen einzelnen Menütitel an. Dabei werden die Standardfarben oder die mit DEFINE MENU angegebenen Farben außer Kraft gesetzt.Standardmäßig sind die Farben der Menütitel einer Menüleiste durch das Farbschema 2 des aktuellen Farbsatzes bestimmt.
Weitere Informationen zu Farbschemas und Farbpaaren finden Sie unter Farben - Überblick.
Hinweise
Sie müssen jeden Menütitel, der auf der Menüleiste angezeigt werden soll, mit einem eigenen DEFINE PAD-Befehl erstellen. Zuvor muss die Menüleiste mit DEFINE MENU definiert und der Name der Menüleiste im DEFINE PAD-Befehl angegeben werden.
Wenn Sie das Menü mit dem Menü-Designer erstellen, müssen Sie diese Befehle möglicherweise nicht verwenden, da der Menü-Designer automatisch die Befehle für Ihr Menü erstellt. Der Menü-Designer verwendet das Visual FoxPro-Systemmenü, zu dem Sie Ihre eigenen Menüeinträge hinzufügen können. Weitere Informationen zum Erstellen von Menüs finden Sie unter Erstellung eines Menüsystems.
Beispiel
Im folgenden Beispiel werden mit DEFINE PAD Menütitel zur Visual FoxPro-Systemmenüleiste hinzugefügt. Die aktuelle Systemmenüleiste wird zuerst mit SET SYSMENU SAVE im Arbeitsspeicher gespeichert und anschließend werden alle Systemmenütitel mit SET SYSMENU TO entfernt.
Mit DEFINE PAD werden mehrere Systemmenütitel erstellt. Bei Wahl eines Menüntitels wird die Prozedur CHOICE ausgeführt. CHOICE zeigt den Namen des gewählten Titels sowie den Namen der Menüleiste an und schaltet das Markierungszeichen des Menütitels an und aus. Bei Wahl des Menüs Exit wird das Visual FoxPro-Systemmenü wiederhergestellt.
** Name this program DEFINPAD.PRG ** CLEAR SET TALK OFF SET SYSMENU SAVE SET SYSMENU TO PUBLIC markpad markpad = .T. DEFINE PAD syspad OF _MSYSMENU PROMPT '<System' COLOR SCHEME 3 ; KEY ALT+S, '' DEFINE PAD editpad OF _MSYSMENU PROMPT '<Edit' COLOR SCHEME 3 ; KEY ALT+E, '' DEFINE PAD recordpad OF _MSYSMENU PROMPT '<Record' COLOR SCHEME 3 KEY ALT+R, '' DEFINE PAD windowpad OF _MSYSMENU PROMPT '<Window' COLOR SCHEME 3 ; KEY ALT+W, '' DEFINE PAD reportpad OF _MSYSMENU PROMPT 'Re<ports' COLOR SCHEME 3 ; KEY ALT+P, '' DEFINE PAD exitpad OF _MSYSMENU PROMPT 'E<xit' COLOR SCHEME 3 ; KEY ALT+X, '' ON SELECTION MENU _MSYSMENU ; DO choice IN definpad WITH PAD( ), MENU( ) PROCEDURE choice PARAMETER mpad, mmenu WAIT WINDOW 'You chose ' + mpad + ; ' from menu ' + mmenu NOWAIT SET MARK OF PAD (mpad) OF _MSYSMENU TO ; ! MRKPAD('_MSYSMENU', mpad) markpad = ! markpad IF mpad = 'EXITPAD' SET SYSMENU TO DEFAULT ENDIF
Siehe auch
ACTIVATE MENU | CREATE MENU | DEACTIVATE MENU | DEFINE MENU | GETPAD( ) | HIDE MENU | MRKPAD( ) | ON PAD | ON SELECTION PAD | PRMPAD( ) | RELEASE PAD | SET MARK OF | SET MESSAGE | SET SYSMENU | SHOW MENU