View
122
Download
0
Category
Preview:
Citation preview
Wizards & Wizards & Builders GmbH Builders GmbH
Der MenügeneratorDer Menügenerator
Arbeiten mit dem MenügeneratorArbeiten mit dem Menügeneratorund ggf. Zusatztools unterund ggf. Zusatztools unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Diese Schulung dient der Einführung in das Arbeiten mit dem Menügenerator zur Erzeugung von Menüs, ShortCut-Menüs, TopLevel-Menüs sowie der
Einführung in GenMenuX und Menü-OO-Techniken unter Microsoft Visual
FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
ThemenübersichtThemenübersicht
MenügeneratorMenügenerator DateistrukturDateistruktur „„Normale“ MenüsNormale“ Menüs KontextmenüsKontextmenüs Modale MaskenModale Masken Top-Level-MenüsTop-Level-Menüs ShortCut-MenüsShortCut-Menüs MenüobjekteMenüobjekte Data-Driven MenüsData-Driven Menüs GenMenuXGenMenuX
Wizards & Wizards & Builders GmbH Builders GmbH
Definition eines MenüsDefinition eines Menüs
Definition eines Menüs Definition eines Menüs unterunter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Prinzip des Prinzip des MenügeneratorsMenügenerators
Definieren des Menüs im MenüdesignerDefinieren des Menüs im Menüdesigner Generieren des Codes (über Projekt)Generieren des Codes (über Projekt) Aufrufen des Menücodes (.MPR)Aufrufen des Menücodes (.MPR) Prozedurale Abarbeitung des CodesProzedurale Abarbeitung des Codes Zugriff auf globale Vars und ProceduresZugriff auf globale Vars und Procedures Zugriff Objekte über „Zugriff Objekte über „_SCREEN.Activeform“_SCREEN.Activeform“
Wizards & Wizards & Builders GmbH Builders GmbH
Modulare MenüsModulare Menüs
* Anzeige des Menüs* Anzeige des Menüs DO File.MPRDO File.MPR DO Edit.MPRDO Edit.MPR DO MyApp.MPRDO MyApp.MPR DO Window.MPRDO Window.MPR DO Help.MPRDO Help.MPR
DO FORM InitialFormDO FORM InitialForm
* Ereignissteuerung* Ereignissteuerung READ EVENTS
Wizards & Wizards & Builders GmbH Builders GmbH
Sichern / KaskadierendSichern / Kaskadierend
Sichern/Wiederherstellen des Sichern/Wiederherstellen des Menüs:Menüs:
PUSH MENU _MSYSMENU POP MENU _MSYSMENU
Kaskadierende Menüs:Kaskadierende Menüs: nur wenn mehr als ein Eintrag!nur wenn mehr als ein Eintrag! Ggf. statt Untermenü eine MaskeGgf. statt Untermenü eine Maske Bei Maskenaufruf „...“ nicht vergessen!Bei Maskenaufruf „...“ nicht vergessen!
Wizards & Wizards & Builders GmbH Builders GmbH
Die Elemente eines MenüsDie Elemente eines Menüs
_MSYSMENU
DEFINE PAD OF_MSYSMENU
DEFINEPOPUP
DEFINE BAROF POPUP
Wizards & Wizards & Builders GmbH Builders GmbH
DEFINE PAD/POPUPDEFINE PAD/POPUP
Zurücksetzen Systemmenü:Zurücksetzen Systemmenü: SET SYSMENU TOSET SYSMENU TO
PAD-Definition:PAD-Definition: DEFINE PAD padReports OF _MSYSMENU ;DEFINE PAD padReports OF _MSYSMENU ;
PROMPT ”\<Reports” MESSAGE ””PROMPT ”\<Reports” MESSAGE ””
POPUP-Definition:POPUP-Definition: DEFINE POPUP popReports MARGINDEFINE POPUP popReports MARGIN
Wizards & Wizards & Builders GmbH Builders GmbH
DEFINE BAR/ON SELECTDEFINE BAR/ON SELECT
ON PAD-Definition:ON PAD-Definition: ON PAD padReports OF _MSYSMENU ;ON PAD padReports OF _MSYSMENU ;
ACTIVATE POPUP popReportsACTIVATE POPUP popReports
BAR-Definition:BAR-Definition: DEFINE BAR 1 OF popReports ;DEFINE BAR 1 OF popReports ; PROMPT ”Rechnung” MESSAGE ””PROMPT ”Rechnung” MESSAGE ””
ON SELECTION BAR-Definition:ON SELECTION BAR-Definition: ON SELECTION BAR 1 OF popReports ;ON SELECTION BAR 1 OF popReports ;
REPORT FORM INVOICE.FRX PREVIEWREPORT FORM INVOICE.FRX PREVIEW
Wizards & Wizards & Builders GmbH Builders GmbH
SystemmenüsSystemmenüs
System-Menüs verwenden:System-Menüs verwenden: EditEdit pad _MSM_EDIT popup _MEDIT pad _MSM_EDIT popup _MEDIT Window pad _MSM_WINDO popu _MWINDOWWindow pad _MSM_WINDO popu _MWINDOW
Übersicht über Systemmenünamen:Übersicht über Systemmenünamen: SYS(2013)SYS(2013) Quick MenüQuick Menü Insert BarInsert Bar
SYS(1500, „_MED_FIND“, „_MEDIT“)SYS(1500, „_MED_FIND“, „_MEDIT“)
Wizards & Wizards & Builders GmbH Builders GmbH
SKIP FORSKIP FOR
SKIP FOR (.T. = disabled)SKIP FOR (.T. = disabled) DEFINE BAR 3 OF _MFILE ;DEFINE BAR 3 OF _MFILE ;
PROMPT ”Close” MESSAGE ”Close form” ;PROMPT ”Close” MESSAGE ”Close form” ; SKIP FOR TYPE("_SCREEN.ActiveForm")!="O"SKIP FOR TYPE("_SCREEN.ActiveForm")!="O"
ON SELECTION BAR 3 OF _MFILE ;ON SELECTION BAR 3 OF _MFILE ; _SCREEN.ActiveForm.Release_SCREEN.ActiveForm.Release
Systemmenüs disablen sich selbst (Del)Systemmenüs disablen sich selbst (Del) SET SKIP OF nicht Windows-konform!SET SKIP OF nicht Windows-konform!
stattdessen Popup entfernen!stattdessen Popup entfernen!
Wizards & Wizards & Builders GmbH Builders GmbH
MaskenanbindungMaskenanbindung
Anbindung von Menüs an Anbindung von Menüs an Masken, Beispiel für Masken, Beispiel für
RecentlyUsed-Menüs unter RecentlyUsed-Menüs unter Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
MaskenanbindungMaskenanbindung
Optionen: Append, Before, Optionen: Append, Before, AfterAfter nicht Replace!!!nicht Replace!!!
Pad Name eintragen (benötigt)Pad Name eintragen (benötigt) Activate der Maske:Activate der Maske:
DO FormMenu.MPRDO FormMenu.MPR
Deactivate der Maske:Deactivate der Maske: RELEASE PAD myform OF _MSYSMENURELEASE PAD myform OF _MSYSMENU
Wizards & Wizards & Builders GmbH Builders GmbH
Menüs in modalen Menüs in modalen MaskenMasken
Alle Menüeintrage sind disabled!Alle Menüeintrage sind disabled! Neu aufrufen des Menüs - alles Neu aufrufen des Menüs - alles
enabled!enabled! Pseudo-modale Masken stattdessen:Pseudo-modale Masken stattdessen:
logischer glModal- oder oApp.lModal-Schalterlogischer glModal- oder oApp.lModal-Schalter alle unerwünschten Menüs SKIP FOR glModal ...alle unerwünschten Menüs SKIP FOR glModal ... Modale Maske setzen glModal und Deactivate .F.Modale Maske setzen glModal und Deactivate .F. keine systemmodalen Masken mehr möglich...keine systemmodalen Masken mehr möglich...
Wizards & Wizards & Builders GmbH Builders GmbH
Recently Used Files ListRecently Used Files List
Datei (prompt, Action, Timestamp)Datei (prompt, Action, Timestamp)LOCATE FOR prompt = cFormNameLOCATE FOR prompt = cFormName
IF FOUND()IF FOUND()
REPLACE Timestamp WITH DATETIME()REPLACE Timestamp WITH DATETIME()
ELSEELSE
IF RECCOUNT() < nMaxItemsIF RECCOUNT() < nMaxItems
INSERT INTO <datei> VALUES(cFormName, cAction, DATETIME())INSERT INTO <datei> VALUES(cFormName, cAction, DATETIME())
ELSEELSE
SET ORDER TO Timestamp ASCENDING SET ORDER TO Timestamp ASCENDING
GO TOPGO TOP
REPLACE prompt WITH cFormName, Action WITH cAction, ;REPLACE prompt WITH cFormName, Action WITH cAction, ;
Timestamp WITH DATETIME()Timestamp WITH DATETIME()
ENDIFENDIF
ENDIFENDIF
Wizards & Wizards & Builders GmbH Builders GmbH
Recently Used im File-Recently Used im File-MenüMenü
Manuelles Erzeugen von Einträgen:Manuelles Erzeugen von Einträgen:DEFINE BAR nBar OF _MFILE PROMPT "\-"DEFINE BAR nBar OF _MFILE PROMPT "\-"
SCANSCAN
nBar = nBar + 1nBar = nBar + 1
iPrefix = iPrefix + 1iPrefix = iPrefix + 1
cAction = ALLTRIM(UPrefs.Action)cAction = ALLTRIM(UPrefs.Action)
DEFINE BAR nBar OF _MFILE PROMPT "\<" + ;DEFINE BAR nBar OF _MFILE PROMPT "\<" + ;
ALLTRIM(STR(iPrefix)) + " " + UPrefs.PromptALLTRIM(STR(iPrefix)) + " " + UPrefs.Prompt
ON SELECTION BAR nBar OF _MFILE &cActionON SELECTION BAR nBar OF _MFILE &cAction
ENDSCANENDSCAN
* Add the Exit menu item* Add the Exit menu item
DEFINE BAR nBar + 1 OF _MFILE PROMPT "\-"DEFINE BAR nBar + 1 OF _MFILE PROMPT "\-"
DEFINE BAR nBar + 2 OF _MFILE PROMPT "E\<xit"DEFINE BAR nBar + 2 OF _MFILE PROMPT "E\<xit"
ON SELECTION BAR nBar + 2 OF _MFILE CLEAR EVENTSON SELECTION BAR nBar + 2 OF _MFILE CLEAR EVENTS
Wizards & Wizards & Builders GmbH Builders GmbH
Top-Level- und ShortCut-Top-Level- und ShortCut-MenüsMenüs
Menüs in Top-Level-Masken Menüs in Top-Level-Masken und ShortCut-Menüs auf und ShortCut-Menüs auf
Maustaste inMaustaste inMicrosoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Top Level MenüsTop Level Menüs
SDI-Masken (ShowWindow=2)SDI-Masken (ShowWindow=2) ggf. kein Zugriff auf Systemmenü, ggf. kein Zugriff auf Systemmenü,
deshalb eigenesdeshalb eigenes
Schalter für Top-Level-MenüsSchalter für Top-Level-Menüs Aufruf mit Referenz und Name/FlagAufruf mit Referenz und Name/Flag
DO <mprname> WITH <oFormRef> [,<cMenuname>|<lRename>]DO <mprname> WITH <oFormRef> [,<cMenuname>|<lRename>] Zusatzschalter ist für Multiple Instances (SET DRIVECRAZY)Zusatzschalter ist für Multiple Instances (SET DRIVECRAZY)
Beseitigung im DestroyBeseitigung im Destroy RELEASE MENU ( THIS.NAME )RELEASE MENU ( THIS.NAME )
Wizards & Wizards & Builders GmbH Builders GmbH
Short Cut MenüsShort Cut Menüs
Menügenerator als erste AuswahlMenügenerator als erste Auswahl Markierungen können mit Markierungen können mit
#PREPOP gesetzt werden#PREPOP gesetzt werden(Cleanup vorverlagert)(Cleanup vorverlagert)
Aufruf über das Rightclick-EventAufruf über das Rightclick-Event
DO frmshort.mpr WITH THISDO frmshort.mpr WITH THIS
PARAMETER oREFPARAMETER oREF
#PREPOP#PREPOP
SET MARK OF BAR 4 OF frmshort TO oRef.AlwaysOnTopSET MARK OF BAR 4 OF frmshort TO oRef.AlwaysOnTop
Wizards & Wizards & Builders GmbH Builders GmbH
Short Cuts manuellShort Cuts manuell
\SAMPLES\CLASSES\UTILITY.VCX menulib class
Code im Rightclick der Maske:Code im Rightclick der Maske:laMenu[1]="\<Center"laMenu[1]="\<Center"
laMenu[2]="\<Font..."laMenu[2]="\<Font..."
laMenu[3]="\<Minimize"laMenu[3]="\<Minimize"
laMenu[4]="\-"laMenu[4]="\-"
laMenu[5]="E\<xit"laMenu[5]="E\<xit"
THISFORM.oMenuShortcut.ShowMenu(@laMenu)THISFORM.oMenuShortcut.ShowMenu(@laMenu)
DO CASEDO CASE
CASE BAR()=1CASE BAR()=1
THISFORM.AutoCenter=.T.THISFORM.AutoCenter=.T.
CASE BAR()=2CASE BAR()=2
THISFORM.SetFont && a user-defined methodTHISFORM.SetFont && a user-defined method
CASE BAR()=3CASE BAR()=3
THISFORM.WindowState=1THISFORM.WindowState=1
CASE BAR()=5CASE BAR()=5
THISFORM.ReleaseTHISFORM.Release
ENDCASEENDCASE
Wizards & Wizards & Builders GmbH Builders GmbH
OO- und DD-MenüsOO- und DD-Menüs
Objektorientierte Menüs und Objektorientierte Menüs und Data-Driven-Menüs unterData-Driven-Menüs unterMicrosoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Objektorientierte MenüsObjektorientierte Menüs
Menüs können auch aus Objekten Menüs können auch aus Objekten heraus generiert werden, die heraus generiert werden, die entsprechende Methoden besitzenentsprechende Methoden besitzen
Verwendet z.B. im Visual Verwendet z.B. im Visual Codebook, Visual FoxExpressCodebook, Visual FoxExpress
Vorteil: Objektorientierte SyntaxVorteil: Objektorientierte Syntax Nachteil: Meist kein guter Nachteil: Meist kein guter
Designer...Designer...
Wizards & Wizards & Builders GmbH Builders GmbH
Data-Driven MenüsData-Driven Menüs
Ggf. Tabelle für Bars:Ggf. Tabelle für Bars:SCANSCAN
DEFINE PAD (ALLTRIM(npad)) OF _MSYSMENU ;DEFINE PAD (ALLTRIM(npad)) OF _MSYSMENU ;
PROMPT ALLTRIM(Prompt) MESSAGE ALLTRIM(Message)PROMPT ALLTRIM(Prompt) MESSAGE ALLTRIM(Message)
DO DefinePop WITH popname, npad, dbfnameDO DefinePop WITH popname, npad, dbfname
ENDSCANENDSCAN
Tabelle für PopupsTabelle für Popups Generische Funktion für DefinitionGenerische Funktion für Definition Sinnvoll: Private Datasession, Filter!Sinnvoll: Private Datasession, Filter!
Wizards & Wizards & Builders GmbH Builders GmbH
GenMenuXGenMenuX
Verwendung des Menü-Extenders Verwendung des Menü-Extenders GenMenux (Andrew Ross McNeill) GenMenux (Andrew Ross McNeill)
in in
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Übersicht GenMenuXÜbersicht GenMenuX
Erweiterung des Maskengenerators:Erweiterung des Maskengenerators: Definition von Position, Farbe, Definition von Position, Farbe,
AktionenAktionen Logische Klauseln statt SKIPFORLogische Klauseln statt SKIPFOR Automatische Hot KeysAutomatische Hot Keys Treiber (Pre-/Post-Driver)Treiber (Pre-/Post-Driver) Templates (Eintrags-Bibliothek)Templates (Eintrags-Bibliothek)
Wizards & Wizards & Builders GmbH Builders GmbH
Funktionen GenMenuX (1)Funktionen GenMenuX (1)
Config- und Setup-Directives:Config- und Setup-Directives: AUTOACT, -HOT, -POS, -RUNAUTOACT, -HOT, -POS, -RUN FOUNDATION (Foundation Read)FOUNDATION (Foundation Read) FOXMNX (Bibliotheksdatei)FOXMNX (Bibliotheksdatei) HIDE (verstecken während Aufbau)HIDE (verstecken während Aufbau) MNXDRV1-5, MPRDRV1-2 (Treiber)MNXDRV1-5, MPRDRV1-2 (Treiber) SYSPOP (Push/Pop Menu)SYSPOP (Push/Pop Menu)
Wizards & Wizards & Builders GmbH Builders GmbH
Funktionen GenMenuX (2)Funktionen GenMenuX (2)
Setup-Directives:Setup-Directives: LOCATION (statt Generator)LOCATION (statt Generator) MENU-, POP-, PAD-COLORMENU-, POP-, PAD-COLOR MENUNAMEMENUNAME NOACT, NOAUTO, NOLOC, NOACT, NOAUTO, NOLOC,
NOMARGIN, NOSHADOWNOMARGIN, NOSHADOW SYSDEFAULTSYSDEFAULT
Wizards & Wizards & Builders GmbH Builders GmbH
Funktionen GenMenuX (3)Funktionen GenMenuX (3)
Comment-Directives:Comment-Directives: ARRAYARRAY CASECASE CLAUSECLAUSE IF, GENIF, POPIFIF, GENIF, POPIF MESSAGE, PADNAME, POPNAMEMESSAGE, PADNAME, POPNAME POPCOMMAND, -FIELD, -FILESPOPCOMMAND, -FIELD, -FILES
Wizards & Wizards & Builders GmbH Builders GmbH
Abarbeitungsreihenfolge Abarbeitungsreihenfolge (1)(1)
Temporäre DateiTemporäre Datei NOXGEN-AbbruchNOXGEN-Abbruch GENMENUX-HeadGENMENUX-Head SYSDEFAULTSYSDEFAULT MNXDRV1MNXDRV1 Menu-HotkeysMenu-Hotkeys IGNORE/GENIF/IGNORE/GENIF/
DELETE/MESSAGEDELETE/MESSAGE
MNXDRV2MNXDRV2 NeusortierungNeusortierung IF-BedingungenIF-Bedingungen MNXDRV3MNXDRV3 MNXDRV4MNXDRV4 MNXDRV5 oder MNXDRV5 oder
_GENMENUX_GENMENUX POP-CommandsPOP-Commands
Wizards & Wizards & Builders GmbH Builders GmbH
Abarbeitungsreihenfolge Abarbeitungsreihenfolge (2)(2)
MPRDRV2MPRDRV2 Klauseln:Klauseln:
NOMARGINNOMARGINNOBARNOBARWINDOWWINDOWPOPCOLORPOPCOLORPADCOLORPADCOLORNOSHADOWNOSHADOWLINELINEMENUNAMEMENUNAME{{}}{{}}
MPRDRV2MPRDRV2 Temporär-Temporär-
dateiendateien AUTORUNAUTORUN
Wizards & Wizards & Builders GmbH Builders GmbH
Was ist zu bedenken?Was ist zu bedenken?
SystemmenüsSystemmenüs Recently Used-Recently Used-
ListeListe Top-Level-FormsTop-Level-Forms ShortCutsShortCuts OO-MenüsOO-Menüs Data-Driven Data-Driven
MenüsMenüs GenMenuXGenMenuX
Wizards & Wizards & Builders GmbH Builders GmbH
Vielen Dank!Vielen Dank!
Das waren die Themen:Das waren die Themen: MenügeneratorMenügenerator DateistrukturDateistruktur „„Normale“ MenüsNormale“ Menüs KontextmenüsKontextmenüs Modale MaskenModale Masken Top-Level-MenüsTop-Level-Menüs ShortCut-MenüsShortCut-Menüs MenüobjekteMenüobjekte Data-Driven Data-Driven
MenüsMenüs GenMenuXGenMenuX
Wizards & Wizards & Builders GmbH Builders GmbH
Wenn Fragen bestehen:Wenn Fragen bestehen:
Wizards & BuildersWizards & BuildersMethodische Software-Methodische Software-
Entwicklung GmbHEntwicklung GmbH
Frankfurter Str. 21bFrankfurter Str. 21b
61476 Kronberg61476 Kronberg
Tel.: 06173-950906Tel.: 06173-950906
Fax: 06173-950907Fax: 06173-950907
CIS: 101605,175CIS: 101605,175
Recommended