340 likes | 430 Views
Der Menügenerator. Arbeiten mit dem Menügenerator und ggf. Zusatztools unter Microsoft Visual FoxPro.
E N D
Der Menügenerator Arbeiten mit dem Menügeneratorund ggf. Zusatztools unterMicrosoft Visual FoxPro
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
Themenübersicht • Menügenerator • Dateistruktur • „Normale“ Menüs • Kontextmenüs • Modale Masken • Top-Level-Menüs • ShortCut-Menüs • Menüobjekte • Data-Driven Menüs • GenMenuX
Definition eines Menüs Definition eines Menüs unter Microsoft Visual FoxPro
Prinzip des Menügenerators • Definieren des Menüs im Menüdesigner • Generieren des Codes (über Projekt) • Aufrufen des Menücodes (.MPR) • Prozedurale Abarbeitung des Codes • Zugriff auf globale Vars und Procedures • Zugriff Objekte über „_SCREEN.Activeform“
Modulare Menüs • * Anzeige des Menüs • DO File.MPR • DO Edit.MPR • DO MyApp.MPR • DO Window.MPR • DO Help.MPR • DO FORM InitialForm • * Ereignissteuerung • READ EVENTS
Sichern / Kaskadierend • Sichern/Wiederherstellen des Menüs: • PUSH MENU _MSYSMENU • POP MENU _MSYSMENU • Kaskadierende Menüs: • nur wenn mehr als ein Eintrag! • Ggf. statt Untermenü eine Maske • Bei Maskenaufruf „...“ nicht vergessen!
DEFINE PAD/POPUP • Zurücksetzen Systemmenü: • SET SYSMENU TO • PAD-Definition: • DEFINE PAD padReports OF _MSYSMENU ; • PROMPT ”\<Reports” MESSAGE ”” • POPUP-Definition: • DEFINE POPUP popReports MARGIN
DEFINE BAR/ON SELECT • ON PAD-Definition: • ON PAD padReports OF _MSYSMENU ; • ACTIVATE POPUP popReports • BAR-Definition: • DEFINE BAR 1 OF popReports ; • PROMPT ”Rechnung” MESSAGE ”” • ON SELECTION BAR-Definition: • ON SELECTION BAR 1 OF popReports ; • REPORT FORM INVOICE.FRX PREVIEW
Systemmenüs • System-Menüs verwenden: • Edit pad _MSM_EDIT popup _MEDIT • Window pad _MSM_WINDO popu _MWINDOW • Übersicht über Systemmenünamen: • SYS(2013) • Quick Menü • Insert Bar • SYS(1500, „_MED_FIND“, „_MEDIT“)
SKIP FOR • SKIP FOR (.T. = disabled) • DEFINE BAR 3 OF _MFILE ; • PROMPT ”Close” MESSAGE ”Close form” ; • SKIP FOR TYPE("_SCREEN.ActiveForm")!="O" • ON SELECTION BAR 3 OF _MFILE ; • _SCREEN.ActiveForm.Release • Systemmenüs disablen sich selbst (Del) • SET SKIP OF nicht Windows-konform! • stattdessen Popup entfernen!
Maskenanbindung Anbindung von Menüs an Masken, Beispiel für RecentlyUsed-Menüs unter Microsoft Visual FoxPro
Maskenanbindung • Optionen: Append, Before, After • nicht Replace!!! • Pad Name eintragen (benötigt) • Activate der Maske: • DO FormMenu.MPR • Deactivate der Maske: • RELEASE PAD myform OF _MSYSMENU
Menüs in modalen Masken • Alle Menüeintrage sind disabled! • Neu aufrufen des Menüs - alles enabled! • Pseudo-modale Masken stattdessen: • logischer glModal- oder oApp.lModal-Schalter • alle unerwünschten Menüs SKIP FOR glModal ... • Modale Maske setzen glModal und Deactivate .F. • keine systemmodalen Masken mehr möglich...
Recently Used Files List • Datei (prompt, Action, Timestamp) LOCATE FOR prompt = cFormName IF FOUND() REPLACE Timestamp WITH DATETIME() ELSE IF RECCOUNT() < nMaxItems INSERT INTO <datei> VALUES(cFormName, cAction, DATETIME()) ELSE SET ORDER TO Timestamp ASCENDING GO TOP REPLACE prompt WITH cFormName, Action WITH cAction, ; Timestamp WITH DATETIME() ENDIF ENDIF
Recently Used im File-Menü • Manuelles Erzeugen von Einträgen: DEFINE BAR nBar OF _MFILE PROMPT "\-" SCAN nBar = nBar + 1 iPrefix = iPrefix + 1 cAction = ALLTRIM(UPrefs.Action) DEFINE BAR nBar OF _MFILE PROMPT "\<" + ; ALLTRIM(STR(iPrefix)) + " " + UPrefs.Prompt ON SELECTION BAR nBar OF _MFILE &cAction ENDSCAN * Add the Exit menu item DEFINE BAR nBar + 1 OF _MFILE PROMPT "\-" DEFINE BAR nBar + 2 OF _MFILE PROMPT "E\<xit" ON SELECTION BAR nBar + 2 OF _MFILE CLEAR EVENTS
Top-Level- und ShortCut-Menüs Menüs in Top-Level-Masken und ShortCut-Menüs auf Maustaste inMicrosoft Visual FoxPro
Top Level Menüs • SDI-Masken (ShowWindow=2) • ggf. kein Zugriff auf Systemmenü, deshalb eigenes • Schalter für Top-Level-Menüs • Aufruf mit Referenz und Name/Flag • DO <mprname> WITH <oFormRef> [,<cMenuname>|<lRename>] • Zusatzschalter ist für Multiple Instances (SET DRIVECRAZY) • Beseitigung im Destroy • RELEASE MENU ( THIS.NAME )
Short Cut Menüs • Menügenerator als erste Auswahl • Markierungen können mit #PREPOP gesetzt werden(Cleanup vorverlagert) • Aufruf über das Rightclick-Event DO frmshort.mpr WITH THIS PARAMETER oREF #PREPOP SET MARK OF BAR 4 OF frmshort TO oRef.AlwaysOnTop
Short Cuts manuell • \SAMPLES\CLASSES\UTILITY.VCX • menulib class • Code im Rightclick der Maske: laMenu[1]="\<Center" laMenu[2]="\<Font..." laMenu[3]="\<Minimize" laMenu[4]="\-" laMenu[5]="E\<xit" THISFORM.oMenuShortcut.ShowMenu(@laMenu) DO CASE CASE BAR()=1 THISFORM.AutoCenter=.T. CASE BAR()=2 THISFORM.SetFont && a user-defined method CASE BAR()=3 THISFORM.WindowState=1 CASE BAR()=5 THISFORM.Release ENDCASE
OO- und DD-Menüs Objektorientierte Menüs und Data-Driven-Menüs unterMicrosoft Visual FoxPro
Objektorientierte Menüs • Menüs können auch aus Objekten heraus generiert werden, die entsprechende Methoden besitzen • Verwendet z.B. im Visual Codebook, Visual FoxExpress • Vorteil: Objektorientierte Syntax • Nachteil: Meist kein guter Designer...
Data-Driven Menüs • Ggf. Tabelle für Bars: SCAN DEFINE PAD (ALLTRIM(npad)) OF _MSYSMENU ; PROMPT ALLTRIM(Prompt) MESSAGE ALLTRIM(Message) DO DefinePop WITH popname, npad, dbfname ENDSCAN • Tabelle für Popups • Generische Funktion für Definition • Sinnvoll: Private Datasession, Filter!
GenMenuX Verwendung des Menü-Extenders GenMenux (Andrew Ross McNeill) in Microsoft Visual FoxPro
Übersicht GenMenuX Erweiterung des Maskengenerators: • Definition von Position, Farbe, Aktionen • Logische Klauseln statt SKIPFOR • Automatische Hot Keys • Treiber (Pre-/Post-Driver) • Templates (Eintrags-Bibliothek)
Funktionen GenMenuX (1) Config- und Setup-Directives: • AUTOACT, -HOT, -POS, -RUN • FOUNDATION (Foundation Read) • FOXMNX (Bibliotheksdatei) • HIDE (verstecken während Aufbau) • MNXDRV1-5, MPRDRV1-2 (Treiber) • SYSPOP (Push/Pop Menu)
Funktionen GenMenuX (2) Setup-Directives: • LOCATION (statt Generator) • MENU-, POP-, PAD-COLOR • MENUNAME • NOACT, NOAUTO, NOLOC, NOMARGIN, NOSHADOW • SYSDEFAULT
Funktionen GenMenuX (3) Comment-Directives: • ARRAY • CASE • CLAUSE • IF, GENIF, POPIF • MESSAGE, PADNAME, POPNAME • POPCOMMAND, -FIELD, -FILES
Temporäre Datei NOXGEN-Abbruch GENMENUX-Head SYSDEFAULT MNXDRV1 Menu-Hotkeys IGNORE/GENIF/DELETE/MESSAGE MNXDRV2 Neusortierung IF-Bedingungen MNXDRV3 MNXDRV4 MNXDRV5 oder _GENMENUX POP-Commands Abarbeitungsreihenfolge (1)
MPRDRV2 Klauseln: NOMARGINNOBARWINDOWPOPCOLORPADCOLORNOSHADOWLINEMENUNAME{{}} MPRDRV2 Temporär-dateien AUTORUN Abarbeitungsreihenfolge (2)
Was ist zu bedenken? • Systemmenüs • Recently Used-Liste • Top-Level-Forms • ShortCuts • OO-Menüs • Data-Driven Menüs • GenMenuX
Vielen Dank! Das waren die Themen: • Menügenerator • Dateistruktur • „Normale“ Menüs • Kontextmenüs • Modale Masken • Top-Level-Menüs • ShortCut-Menüs • Menüobjekte • Data-Driven Menüs • GenMenuX
Wenn Fragen bestehen: Wizards & Builders Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175