1 / 34

Der Menügenerator

Der Menügenerator. Arbeiten mit dem Menügenerator und ggf. Zusatztools unter Microsoft Visual FoxPro.

chancellor
Download Presentation

Der Menügenerator

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Der Menügenerator Arbeiten mit dem Menügeneratorund ggf. Zusatztools unterMicrosoft Visual FoxPro

  2. 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

  3. 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

  4. Definition eines Menüs Definition eines Menüs unter Microsoft Visual FoxPro

  5. 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“

  6. 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

  7. 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!

  8. Die Elemente eines Menüs

  9. 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

  10. 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

  11. 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“)

  12. 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!

  13. Maskenanbindung Anbindung von Menüs an Masken, Beispiel für RecentlyUsed-Menüs unter Microsoft Visual FoxPro

  14. 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

  15. 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...

  16. 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

  17. 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

  18. Top-Level- und ShortCut-Menüs Menüs in Top-Level-Masken und ShortCut-Menüs auf Maustaste inMicrosoft Visual FoxPro

  19. 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 )

  20. 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

  21. 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

  22. OO- und DD-Menüs Objektorientierte Menüs und Data-Driven-Menüs unterMicrosoft Visual FoxPro

  23. 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...

  24. 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!

  25. GenMenuX Verwendung des Menü-Extenders GenMenux (Andrew Ross McNeill) in Microsoft Visual FoxPro

  26. Übersicht GenMenuX Erweiterung des Maskengenerators: • Definition von Position, Farbe, Aktionen • Logische Klauseln statt SKIPFOR • Automatische Hot Keys • Treiber (Pre-/Post-Driver) • Templates (Eintrags-Bibliothek)

  27. 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)

  28. Funktionen GenMenuX (2) Setup-Directives: • LOCATION (statt Generator) • MENU-, POP-, PAD-COLOR • MENUNAME • NOACT, NOAUTO, NOLOC, NOMARGIN, NOSHADOW • SYSDEFAULT

  29. Funktionen GenMenuX (3) Comment-Directives: • ARRAY • CASE • CLAUSE • IF, GENIF, POPIF • MESSAGE, PADNAME, POPNAME • POPCOMMAND, -FIELD, -FILES

  30. 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)

  31. MPRDRV2 Klauseln: NOMARGINNOBARWINDOWPOPCOLORPADCOLORNOSHADOWLINEMENUNAME{{}} MPRDRV2 Temporär-dateien AUTORUN Abarbeitungsreihenfolge (2)

  32. Was ist zu bedenken? • Systemmenüs • Recently Used-Liste • Top-Level-Forms • ShortCuts • OO-Menüs • Data-Driven Menüs • GenMenuX

  33. 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

  34. Wenn Fragen bestehen: Wizards & Builders Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175

More Related