home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-28 | 47.4 KB | 1,354 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- T V M C
-
- Turbo Vision Menu Compiler
- Version 1.00
-
-
-
- Copyright (C) 1991 by Thomas J. Buckel
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
- Inhalt
- ------
-
-
-
- 1. Einführung 3
-
- A. Warum TVMC ? 3
- B. Features von TVMC 3
- C. Mitgelieferte Dateien 4
- D. Installation 4
- E. Ein Beispiel 5
-
-
- 2. ShareWare, Registrierung und Support 6
-
-
- 3. Referenz 8
-
- A. Kommandozeilensyntax 8
- a. Kommandozeilenparameter, allgemein 8
- b. Kommandozeilenparameter im Detail 9
- B. .MC Aufbau 13
- a. Definition der Menüleiste 14
- b. Definition der Statuszeile 17
- C. MCTEST 19
-
-
- 4. Tips zu TVMC und MCTest 20
-
-
- 5. Anhang 21
-
- A. Definierte Konstanten 21
-
-
-
-
-
-
- Eingetragene Warenzeichen wie Turbo Pascal werden ohne Rücksicht
- auf den Inhaber verwendet.
- Der Autor übernimmt keine Haftung für Fehlfunktionen des Programms
- und für daraus entstandene Schäden.
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 2 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
- Einführung
- ----------
-
- Diese Anleitung setzt Grundkenntnisse in der Turbo-Pascal 6.0 /
- Turbo Vision Programmierung voraus, insbesondere im Bereich von
- Resourcefiles.
-
-
-
- Warum TVMC und was ist TVMC ?
- -----------------------------
-
- Wenn Sie oft oder ausschließlich mit Turbo Vision (TV) arbeiten,
- so werden Sie sicher festgestellt haben, daß Turbo Vision sehr
- mächtig ist und man relativ leicht sehr benutzerfreundliche
- Applikationen erstellen kann. Aber TV hat auch einige Nachteile,
- oder besser gesagt "Unübersichtlichkeiten", für den Programmierer,
- zum Beispiel bei der Erstellung von Dialogboxen, Menüleisten oder
- Statuszeilen. Natürlich kann man sich hier herausreden und sagen,
- daß man auch Resourcefiles erstellen kann, man muß aber dennoch
- den Quellcode schreiben. Für die Erstellung von Dialogboxen gibt
- es z.B. das Programm "DLGDSN", mit dem man komfortabel Resourcen
- für Dialogboxen erstellen kann. Aber das Problem beim Schreiben
- oder gar Ändern des Codes für Menüleisten und Statuszeilen bleibt
- erhalten, denn wer blickt denn noch bei diesen Dutzenden von
- Klammern und NIL-Zeigern durch, wer hat sich nicht schon über eine
- fehlende Klammer bei der Menüdefinition geärgert ?
- Hier setzt TVMC ein. Wie der Name schon sagt, ist TVMC ein
- Compiler für Menüleisten- und Statuszeilendefinitionen, der einen
- ASCII-Text in ein Resourcefile verwandelt. Er verarbeitet sogar
- cmXXXX-, kbXXXX- und hcXXXX-Konstanten, generiert hcXXXX- und
- cmXXXX-Units und kann auch noch vorher definierte Konstanten
- beachten.
-
- Zugegeben hat TVMC aber auch einen Nachteil, man muß nämlich die
- IDE verlassen, um TVMC zu verwenden. ( Was aber Borlands Schuld
- ist, da die TP 6.0 IDE im Gegensatz zur TC++ 1.0 IDE keine
- externen Compiler unterstützt.)
-
- P.S.: DLGDSN befindet sich auf der "Goodies"-Diskette zu TP 6.0
- von Borland, wird aber, soweit ich weiß, von einigen Shareware- /
- PD-Händlern vertrieben.
-
-
-
- Features von TVMC
- -----------------
-
- * Erleichtert die Erstellung und Veränderung von Menü- und
- Statuszeilendefinitionen.
-
- * Generiert Resourcefiles (.REZ).
-
-
- ------------------------------------------------------------------
- - 3 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
- * Angabe des Hilfekontextes, der Tastenkombination und des
- Kommandos als Symbol oder als Zahl (hex oder dez).
-
- * Generiert UNITs oder Includefiles mit den verwendeten cmXXXX-
- und hcXXXX-Definitionen.
-
- * Von TVMC erstellte hcXXXX- und cmXXXX-Definitionen wahlweise in
- einer oder in zwei Dateien.
-
- * Beachtet automatisch Standard-TV-Konstanten, z.B. hcNoContext
- oder cmQuit, cmMenu usw.
-
- * Verwendet optional Konstantendefinitionen aus eigenen oder z.B.
- von TVHC generierten Units/Includefiles.
-
- * Unterstützt hilfekontextabhängige Statuszeilen (über
- NewStatusDef).
-
- * Generiert selbstverständlich automatisch passende Namen und
- Endungen für die Dateien.
-
- * Freie Position von Menü und Statuszeile.
-
- * Testprogramm MCTest wird mitgeliefert und erlaubt ein ausführ-
- liches Testen der generierten Menüs und Statuszeilen.
-
-
-
- Mitgelieferte Dateien
- ---------------------
-
- Folgende Dateien werden mit TVMC V1.00 ausgeliefert:
- TVMC.EXE Der Menu-Compiler
- TVMC.DEF Hilfsdatei für TVMC.EXE
- MCTEST.EXE Testprogramm für Menü- und Statuszeilenre-
- sources
- TVMC.DOC Diese Datei
- ORDER.FRM Registrierungsformular
- DEMO.MC Beispielmenüquelltext
- DEMO Beispielparameterdatei
-
-
-
- Installation von TVMC
- ---------------------
-
- Zur Installation kopieren Sie einfach alle Dateien von der
- Diskette auf Festplatte.
- TVMC sollte sich in einem Verzeichnis befinden, das im Pfad
- eingebunden ist und entweder im TP oder TP\UTILS-Verzeichnis
- stehen.
- In der AUTOEXEC.BAT-Datei fügt man noch die Environmentvariable
- "TVMCDEF" ein, die den Pfad, in dem TVMC.DEF steht, angibt.
-
-
- ------------------------------------------------------------------
- - 4 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
-
- Ein Beispiel
- ------------
-
- Um dieses Beispiel auszuführen, sollte TVMC bereits installiert
- sein.
- Im folgender Anleitung wird der Quellcode für Menüs und
- Statuszeilen als ".MC-Quellcode" bezeichnet.
-
- Zu TMVC wird eine Beispieldatei für einen Menüsourcecode (DEMO.MC)
- mitgliefert. Wenn Sie sich diese Datei ansehen, werden Sie
- feststellen, daß der Aufbau einer .MC-Quellcodedatei, im Gegensatz
- zu einer Menüdefinition in TV, sehr übersichtlich und gut
- gegliedert ist. Um diese Demodatei zu kompilieren starten Sie TVMC
- wie folgt:
-
- TVMC @DEMO
-
- Der Parameter @DEMO gibt an, daß sich die Kommandozeilenparameter
- für TVMC im File DEMO befinden. Natürlich könnten Sie TVMC auch
- wie folgt aufrufen:
-
- TVMC demo /1:demo
-
- Doch bei Projekten für die man öfters die Menüleiste ändern
- will/muß, d.h. in der Anfangsphase der Programmierung, ist es
- meiner Meinung nach wesentlich komfortabler, eine Parameterdatei
- zu verwenden, da sich die Dateinamen wahrscheinlich nicht ändern
- werden.
- Ebenso hat TVMC schon eine Unit namens "DEMO.PAS" generiert, die
- die Konstanten für die Menüleiste und die Statuszeile aus DEMO.MC
- enthält.
-
- * Um eine Resourcedatei von TVMC zu verwenden, sollten die von
- TVMC generierten Dateien, die die Konstantendefinitionen
- enthalten, in das Programm eingebunden werden, da sonst
- Verwirrungen über die Werte der Konstanten entstehen !
-
- Um das soeben generierte Resourcedatei auszuprobieren, müssen Sie
- MCTest wie folgt starten:
-
- MCTEST DEMO Menu Statusline demo.pas
-
- MCTest ist eigentlich eine vollständige TV-Applikation, sie dient
- zum testen der Menüs in der Entwicklungsphase. Auf dem Bildschirm
- sehen sie das Fenster "Event Window", in dem Mausereignisse und
- Kommandoevents angezeigt werden. Somit können Sie gefahrlos die
- funktionsfähigkeit des Menüs testen, ohne erst eine Applikation zu
- schreiben. Außerdem beachtet MCTest hilfekontextabhängige
- Statuszeilen (siehe Referenz).
-
- * Wichtig beim Testen mit MCTest ist, daß cmQuit definiert wurde.
-
-
- ------------------------------------------------------------------
- - 5 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
-
- Shareware und Freeware, Lizenz, Registrierung
- ---------------------------------------------
-
-
-
- Was sind Shareware & Freeware ?
- -------------------------------
-
- Shareware ist Software, die man äußerst preiswert testen kann. Man
- muß sich nur bei einem Versender gegen eine (meist) geringe
- Kopiergebühr das Programm zuschicken lassen oder es sich einfach
- aus einer Mailbox downloaden. So erhält man eine sog. Testversion.
- Wenn man das Programm oft benutzt, muß man sich beim Autor
- registrieren lassen und erhält eine Vollversion, Support und
- UpDates.
- Freeware besorgt man sich wie Shareware, erhält aber eine
- Vollversion, die man beliebig nutzen kann. Im Gegensatz zu Public-
- Domain-Software gibt der Autor keine Rechte an dem Programm auf.
-
-
- Nutzungslizenz für TVMC
- -----------------------
-
- TVMC ist für Privatanwender Freeware,d.h. sie können das Programm
- auch ohne Registrierung nach der Testphase weiterhin legal
- benutzen, deshalb ist diese Version auch in keiner Weise
- eingeschränkt. Kommerzielle Anwender, also alle die das Programm
- zur Erstellung von Software benutzten, die sie irgendwie
- vermarkten, müssen sich nach einer Testphase bzw. sobald sie mit
- Hilfe von TVMC erstellte Programme vermarkten, bei mir
- registrieren lassen, was meiner Meinung nach ein faires Angebot
- ist, denn TVMC spart ja vor allem Zeit, die bekanntlich Geld ist.
- Natürlich können sich auch private Anwender zu anderen Konditionen
- registrieren lassen.
- Der Autor behält sich alle Rechte an diesem Programm vor.
-
-
- Registrierung
- -------------
-
- Registrierte Anwender haben folgende Vorzüge :
- - telefonischer Support
- - gedrucktes Handbuch
- - sind für alle folgenden Updates registriert, auch wenn sie
- z.B. von einem PD-Versender gekauft werden.
- - erhalten das nächste Update unaufgefordert und umsonst und
- die folgenden Updates gegen einen Unkostenbeitrag (
- Diskettenkosten,Porto, ca. DM 5,- ) inkl. Handbuch
- - sofortige Information über eine Neuversion
- Nichtregistrierte Privatanwender erhalten schriftlichen Support.
-
-
-
- ------------------------------------------------------------------
- - 6 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
- Registrierungsgebühren :
-
- * freiwillig für private Anwender: DM 20,-
-
- * für kommerzielle Anwender : DM 50,-
-
- Für weitere Details siehe ORDER.FRM.
-
-
-
- Kritik und Anregungen
- -----------------------
-
- Da ein Programm niemals 100% fehlerfrei und perfekt sein kann, bin
- ich offen für Anregungen und konstruktive Kritik an diesem
- Programm und werde auch versuchen, die Vorschläge in neuen
- Versionen von TVMC zu beachten. Ebenso dankbar bin ich für
- Hinweise auf Laufzeitfehler oder sonstige mögliche
- Ungereimtheiten, auch wenn ich hoffe, daß es solche nicht gibt.
- Meine Adresse finden Sie im Kapitel Support oder in "ORDER.FRM".
-
-
- Support
- -------
-
- Nichtregistrierte Privatanwender und kommerzielle Anwender in der
- Testphase erhalten schriftlichen Support unter der Adresse:
- Thomas Buckel
- Irisstr. 17
- W-8501 Eckental
- Bundesrepublik Deutschland
- Ich werde mich bemühen, die Anfragen so schnell wie möglich zu
- bearbeiten.
-
-
- Sonstiges
- ---------
-
- Diese Version von TVMC ist nicht eingeschränkt.
- Die Kopiergebühr für dieses Programm darf nicht mehr als DM 10,-
- betragen. Versender, die mehr verlangen sollten, dürfen dieses
- Programm nicht vertreiben.
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 7 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
-
- Referenz
- --------
-
-
- Kommandozeilenaufruf von TVMC
- -----------------------------
-
-
- Kommandozeilenparameter, allgemein:
- -----------------------------------
-
- Es gilt folgende allgemeine Syntax:
-
- TVMC SourceFile[.MC] [RezFile[.REZ]] [/U|I]
- [/H[:HelpFile[.HLC|.PAS]]] [/C[:CommandFile[.CMD|.PAS]]]
- [/1[:FileName[.INC|.PAS]]] [/DH:HelpDef[.PAS]]
- [/DC:CommandDefs[.PAS]]
-
- oder:
-
- TVMC @ParamFile
-
-
- Allgemein gilt:
- * Das Symbol FileName[.EXT] bedeutet, daß die Endung der Datei
- FileName von TVMC als .EXT angenommen wird. Wird eine Endung
- angegeben, so wird diese verwendet.
- * Steht ein Parameter in eckigen Klammern, so ist er optional und
- TVMC verwendet eine Voreinstellung für diesen.
- * [/x|y] bedeutet, daß man nur einen von beiden Parametern
- angeben darf.
-
- Kurze Erklärung der einzelnen Parameter ( für eine genaue
- Beschriebung siehe weiter unten ) :
-
- SourceFile : Name der Quelldatei
- RezFile : Name der zu erzeugenden Resourcedatei. Falls
- diese Datei vorhanden ist, wird sie
- überschrieben
- /U|I : TVMC soll entweder Units (/U) oder
- Includedateien (/I) als hcXXXX- und cmXXXX-
- Definitionsdateien generieren. /U ist
- Voreinstellung. Dieser Parameter muß vor den
- Parametern /H,/C und /1 stehen.
- /H:HelpFile : Name der hcXXXX-Konstantendatei, die von TVMC
- generiert werden soll. Diese Datei erhält die
- Endung .PAS, falls Units erzeugt werden, und
- .HLC bei Includes. Sie kann direkt in
- Pascalprogramme eingebunden werden (siehe
- Beispiel). Falls diese Datei vorhanden ist,
- wird sie überschrieben.
-
-
- ------------------------------------------------------------------
- - 8 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- /C:CommandFile : Name der cmXXXX-Konstantendatei, für sie gilt
- gleiches, wie für /H:HelpFile.
- /1:Filename : wird dieser Parameter angegeben, so erzeugt
- TVMC nur eine Konstantendatei für cmXXXX und
- hcXXXX, entweder eine Unit oder ein
- Includefile. Darf nur alternativ zu /H: und /C:
- verwendet werden.
- /DH:HelpDefs : Diese Datei enthält schon Definitionen für
- hcXXXX-Konstanten, die entweder selbst
- geschrieben wurden oder z.B. von TVHC erzeugt
- wurden.
- /DC:CommandDefs: Wie /DH:HelpDefs, nur für cmXXXX-Konstanten
-
- @FileName : Die Datei FileName ist eine Parameterdatei und
- soll bei dieser Kompilierung verwendet werden.
-
-
-
- Die Parameter im Detail:
- ------------------------
-
-
- SourceFile[.MC]
- ----------------
-
- Dies ist die Quelldatei, die Definition von Menüleiste und
- Statuszeile enthält. Ihr Aufbau wird in einem eigenen Kapitel
- beschrieben.
-
-
-
- RezFile[.REZ]
- -------------
-
- Name, der zu erzeugenden Resourcedatei. Sie enthält die
- Informationen, um in TV über das Objekt "TResourceFile" eingeladen
- zu werden.
-
- Beispiel: Die Resourcedatei DEMO.REZ enthält die Menüleiste "Menu"
- und die Statuszeile "StatLine". Der Rumpf eines TV-Programms, das
- diese Resource verwendet, würde etwa so aussehen:
-
- {...}
- TYPE TMyApp = OBJECT ( TApplication );
- {...}
- PROCEDURE InitMenuBar; VIRTUAL;
- PROCEDURE InitStatusLine; VIRTUAL;
- {...}
- END;
- {...}
- VAR RezFile : TResourceFile;
- RezStream : PBufStream;
- {...}
- CONSTRUCTOR TMyApp.Init;
-
-
- ------------------------------------------------------------------
- - 9 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- BEGIN
- {...}
- RegisterMenus;
- RezStream:=New(PBufStream,Init('DEMO.REZ',stOpenRead,$100));
- RezFile.Init(RezStream);
- TApplication.Init; { muß nach RezFile.Init stehen !!! }
- {...}
- END;
-
- PROCEDURE TMyApp.InitMenuBar;
- BEGIN
- MenuBar:=PMenuBar(RezFile.Get('Menu'));
- END;
- PROCEDURE TMyApp.InitStatusLine;
- BEGIN
- StatusLine:=PStatusLine(RezFile.Get('StatLine'));
- END;
- {...}
-
-
-
- /U|I, /H[:FileName], /C[:FileName], /1[:FileName]
- -------------------------------------------------
-
- Der Parameter /U bzw. /I gibt an, ob ein Includefile oder eine
- Unit erzeugt werden soll. Dieser Parameter ist maßgeblich für die
- Parameter /H,/C und /1 und muß vor ihnen stehen. Die so
- erzeugte(n) Datei(en) werden benutzt, um im .MC-Quellcode
- Konstanten zu verwenden. Die verwendeten Konstanten werden von
- TVMC zu einer Unit oder einer Includedatei zusammengefaßt und man
- kann sie in den Pascal-Quellcode über Uses oder {$I FileName}
- einbinden und so im Pascalprogramm ohne sonstige Definition
- verwendent.
- TVMC kümmert sich automatisch um den richtigen Wert der Konstanten
- und Standard-TurboVision-Konstanten, wie cmQuit, hcNoContext usw.,
- werden natürlich nicht in die erzeugten Dateien mitaufgenommen.
- Desweiteren besteht die Möglichkeit, statt Symbolen Zahlen ( hex
- oder dezimal ) im .MC-Quellcode zu verwenden oder Konstanten aus
- Units unter TVMC zu verwenden ( siehe /DH,/DC ).
-
- Wird einer der Parameter ohne Dateinamen ( /1,/H,/C ) angegeben,
- so verwendet TVMC folgende Vorgaben:
- Unit Include
- /1 SourceName.PAS SourceName.INC
- /H SourceName_H.PAS SourceName.HLC
- /C SourceName_C.PAS SourceName.CMD
-
- Falls SourceName bei /H oder /C zu lange ist, werden die letzten
- beiden Buchstaben automatisch für _H und _C überschrieben.
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 10 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
- /DH:FileName, /DC:FileName
- --------------------------
-
- Angenommen, Sie verwenden TVHC um eine Helpdatei zu erzeugen, dann
- erzeugt TVHC eine Unit mit den Konstanten. Wenn Sie jetzt mit TVMC
- eine Menüleiste kompilieren, dann müßten Sie, wenn Sie die Hilfe
- verwenden wollen, sich die Werte der einzelnen hcXXXX-Konstanten
- merken und sie im .MC-Quellcode als Zahlen angegeben.
- Da diese Methode im grassen Gegensatz zum Sinn von TVMC steht,
- können Sie vordefinierte Konstanten verwenden, die TVMC aus Units,
- aus Includedateien oder anderen Dateien ausliest.
- TVMC der Aufbau einer solchen Datei kann relativ beliebig sein, es
- gibt aber folgendes zu beachten:
- * pro Zeile nur eine Definition
- * TVMC wertet nur Zeilen mit Gleichheitszeichen aus und die
- definierte Konstante muß mit cm oder hc beginnen
- * die Zeilen müssen nicht durch eine Semikolon abgeschlossen sein.
-
- Deshalb sollten sie nur Units angeben, die lediglich
- Konstantendefinitionen enthalten, um keine Fehler zu provozieren.
-
- Beispiele:
- 1) Für die Verwendung einer Unit
- UNIT PreDefHelp;
- INTERFACE
- CONST
- hcFileOpen = 10000;
- hcFileExit = 10001;
- {...}
- IMPLEMENTATION
- END.
- 2) Für ein Includefile:
- CONST
- hcFileOpen = 10000;
- hcFileExit = 10001;
- {...}
- 3) Für eine andere Datei:
- hcFileOpen = 10000
- hcFileExit = 10001
-
- Sie sehen, daß diese Dateien grundsätzlich den selben Aufbau
- haben.
-
-
-
- @FileName - ParameterFiles
- --------------------------
-
- Parameterdateien erleichtern die Arbeit ungemein, denn TVMC
- braucht nur mit ihrem Namen aufgerufen werden, die restlichen
- Parameter stehen in der Datei. Besonders bei Projekten, wo der
- .MC-Quellcode öfters kompiliert werden muß, sind sie sehr
- effektiv.
-
-
- ------------------------------------------------------------------
- - 11 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- Ein Parameterdatei ist eine ASCII-Datei, bei der in jeder Zeile
- ein Kommandozeilenparameter von TVMC steht.
-
- Beispiel : DEMO-Parameterdatei:
- DEMO.MC
- DEMO1.REZ
- /U
- /1:DEMO_U.PAS
-
- Ansonsten gilt für die Parameter in einer Parameterdatei das
- gleiche wie von der Kommandozeile.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 12 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
- Aufbau eines .MC-Quellcodes
- ---------------------------
-
-
-
- Ein .MC-Quellcode hat folgenden, allgemeinen Aufbau ( ...
- markieren Auslassungen , <> Symbolnamen ) :
-
-
- #MENU <MenuName>
- {...}
- #ENDM
-
- #STATLINE <StatLineName>
- {...}
- #ENDS
-
-
- Logischerweise wird im Bereich von #MENU die Menüleiste definiert
- und von #STATLINE diee Statuszeile. In den beiden folgenden
- Abschnitten wird der Aufbau dieser Bereiche detailiert
- beschrieben. Zu sagen bleibt noch, daß ein .MC-Quellcode auch nur
- eine von beiden Definitionen enthalten darf, maximal aber je eine
- von beiden.
-
- Falls mehrere Menüleisten in einem Programm benötigt werden, so
- müssen mehere Resourcefiles verwendet werden, das man
- Resourcefiles nicht mit "COPY r1.rez+r2.rez rn.rez"
- zusammenkopieren kann.
-
-
- Ein den nächsten beiden Abschnitten gilt folgende Symbolik:
-
- * hcXXXX : Hilfekontext für ein Turbo Vision Objekt.
- * cmXXXX : Kommando, das erzeugt werden soll.
- * kbXXXX : Symbol für eine Tastenkombination ( wie in TV ).
-
- Diese Symbole können als Konstanten, wie hcNoContext,
- hcFileOpen, cmFileOpen oder kbAltX, eingegeben werden.
- Dabei ist zu beachten, daß die Symbole mit den
- passenden ersten beiden Buchstaben beginnen, sonst
- meldet TVMC einen Fehler. Falls die Konstanten noch
- nicht vorher definiert worden sind bzw. keine
- Standardkonstanten von TV sind, werden sie später dann
- in der Konstantendefinitionsdatei gespeichert.
- Außerdem kann man statt eines Symbols eine Zahl
- angegeben, die dezimal oder hexadezimal ( mit
- vorangestelltem $ ) sein darf.
-
- * <Text> : ASCII-String, der meist für Menüpunkte steht. In der
- Praxis wird er allerdings ohne die Klammern und ohne
- Anführungszeichen angegeben. Außerdem entfernt TVMC
-
-
- ------------------------------------------------------------------
- - 13 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- Leerzeichen vor und nach dem String. Deshalb wird z.B.
- der Text in der folgenden Zeile
- Datei öffnen | .........
- |
- +-> zu 'Datei öffnen'.
- Dies ist in der Praxis sehr nützlich, da man seinen .MC-Quellcode
- beliebig mit Leerzeichen in eine übersichtlichere Form bringen
- kann.
-
- Bei Konstanten und Schlüsselwörtern macht TVMC keinen Unterschied
- zwischen Groß- und Kleinschreibung.
-
-
- Aufbau einer Menüleistendefinition
- ----------------------------------
-
- Eine Menüleistendefinition hat allgemeine folgenden Aufbau:
-
- #MENU <Menu> [x1,y1,x2,y2]
- <SubMenuName> | hcXXXX
- {
- <ItemName> | <KeyStr> | kbXXXX | cmXXXX | hcXXXX
- ...
- }
- <SubMenuName> | hcXXXX
- {
- ...
- }
- ...
- #ENDM
-
- Die Menüdefinition wird durch das Schlüsselwort "#MENU" eröffnet.
- In der gleichen Zeile folgt dann der Name, unter dem sie im
- Resourcefile abgelegt wird. Beim Einladen des Resourcefiles unter
- TV muß man auf die richtige Groß- und Kleinschreibung achten.
- Optional kann man Position und Größe der Menüleiste angeben. Diese
- kann i.A. weggelassen werden, TVMC verwendet die Standardwerte
- 0,0,80,1.
-
- Die nächste Zeile im Quellcode enthält den Namen eines Untermenüs,
- der in der Statuszeile erscheint. Zusätzlich gibt man in dieser
- Zeile noch den Hilfekontext, durch '|' (Alt-124) getrennt, an. Nun
- folgt die Definition des Untermenüs, eingeschlossen in
- Mengenklammern ( '{','}' ), die jeweils in einer extra Zeile
- stehen müssen.
-
- * Im Allgemeinen kann man sagen, daß die Parameter der
- Funktionsaufrufe unter TV im .MC-Quellcode durch '|' (Alt-124)
- getrennt werden. Darauf wird in den folgenden Zeilen nicht
- explizit hingewiesen.
-
- Die folgendenden Definitionen der einzelnen Menüpunkte, würde
- unter TV mit der Funtion "NewItem" erstellt werden.
-
-
-
- ------------------------------------------------------------------
- - 14 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- Eine solche Definition beginnt mit dem Namen des Menüpunktes,
- gefolgt von einem String, der den Tastencode im Menüanzeigt. (
- Unter TV : NewItem("Itemname","KeyStr",.... ) ). Soll der
- Tastencode nicht angezeigt werden ( also Leerstring unter TV ), so
- gibt man z.B. folgende Zeilen an, die alle gleichwertig sind :
- Datei öffnen | | ....
- Datei öffnen ||
- Datei öffnen||
- Natürlich wird der Quelltext nicht übersichtlicher, wenn man mit
- Leerzeichen spart, man sollte größzügig formatieren ( siehe
- DEMO.MC ).
- Als nächsten folgt der Tastaturcode, mit dem man das Kommando ohne
- Menü ausführen kann angegeben, dann der zu erzeugende Kommandocode
- und schließlich der Hilfekontext.Wird für diese Konstanten kein
- Wert angegeben, so werden Standardwerte eingesetzt.
-
- Wenn man unter TV einen Menüteil vom anderen abgrenzen will, so
- fügt man die Funktion "NewLine" ein. TVMC kann dies auch, man muß
- nur eine Zeile einfügen, die nur eine Minuszeichen enthät.
-
- Auch bei der Anzahl der Menüpunkte macht TVMC keine
- Einschränkungen.
-
-
- Beispiele :
-
- * folgende Defintionen für einen Menüpunkt sind absolut
- gleichwertig :
- Datei öffnen|F3|kbF3|cmFileOpen|hcNoContext
- Datei öffnen | F3 | KBF3 | cmFileOpen | HCnOcONTEXT
- Datei öffnen | F3 | kbF3 | cmFileOpen | 0
-
- * Umsetzung zu TV / Default-Werte
- Datei öffnen | | | | |
- entspricht in TV:
- NewItem('Datei öffnen','',kbNoKey,$FFFF,hcNoContext,...);
-
- * schließlich noch eine komplette Menüdefinition:
-
- #MENU HauptMenue
- ~D~atei | hcNoContext
- {
- ~Ö~ffnen | F3 | kbF3 | cmFileOpen | hcFileOpen
- ~N~eu | | | cmFileNew | hcFileName
- ~S~peichern | F2 | kbF2 | cmFileSave | hcFileSave
- Speichern ~u~nter | | | cmFileSaveAs | hcFSaveAs
- ~A~lles speichern | | | cmFileSaveAll | hcFSaveAll
- -
- ~V~erz. wechseln | | | cmFileChDir | hcNoContext
- ~D~rucken | | | cmFilePrint | hcNoContext
- ~I~nfo | | | cmFileInfo | hcNoContext
- D~O~S-Shell | | | cmFileShell | hcNoContext
- ~E~nde |Alt-X| kbAltX | cmQuit | hcNoContext
- }
-
-
- ------------------------------------------------------------------
- - 15 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- ~B~earbeiten|hcNoContext
- {
- ~A~usschneiden | | | cmCut | hcNoContext
- ~K~opieren | | | cmCopy | hcNoContext
- }
- ~H~ilfe|hcNoContext
- {
- ~I~nfo... | | | cmHelpInfo | hcNoContext
- }
- #ENDM
-
- entspricht folgendem Pascalcode :
-
- MenuBar:=New(PMenuBar,Init(R,NewMenu(
- NewSubMenu('~D~atei',hcNoContext,NewMenu(
- NewItem('~Ö~ffnen','F3',kbF3,cmFileOpen,hcFileOpen,
- NewItem('~N~eu','',0,cmFileNew,hcFileNew,
- NewItem('~S~peichern','F2',kbF2,cmFileSave,hcFileSave,
- NewItem('Speichern ~u~nter','',0,cmFileSaveAs,hcFSaveAs,
- NewItem('~A~lles speichern','',0,cmFileSaveAll, hcFSaveAll,
- NewLine(
- NewItem('~V~erzeichnis wechseln','',0,cmFileChangeDir,
- hcNoContext,
- NewItem('~D~rucken','',0,cmFilePrint,hcNoContext,
- NewItem('~I~nfo','',0,cmFileInfo,hcNoContext,
- NewItem('D~O~S-Shell','',0,cmFileShell,hcNoContext,
- NewItem('~E~nde','Alt-X',kbAltX,cmQuit,hcNoContext,
- nil)))))))))))),
- NewSubMenu('~B~earbeiten',hcNoContext,NewMenu(
- NewItem('~A~usschneiden','',0,$FFFF,hcNoContext,
- NewItem('~K~opieren','',0,$FFFF,hcNoContext,
- nil))),
- NewSubMenu('~H~ilfe',hcNoContext,NewMenu(
- NewItem('~I~nfo...','',0,$FFFF,hcNoContext,
- nil)),
- nil)))
- )));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 16 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
- Aufbau der Statuszeilendefinition
- ---------------------------------
-
- Die Statuszeilendefinition hat folgenden allgemeinen Aufbau:
-
- #STATLINE <Statuszeilenname> [x1,y1,x2,y2]
- { [hcXXXX [, hcXXXX]]
- <Text> | kbXXXX | cmXXXX
- ...
- }
- { [hcXXXX [, hcXXXX]]
- ...
- }
- ...
- #ENDS
-
- Der Aufbau der ersten Zeile mit dem Schlüsselwort "#STATLINE" ist
- analog zur ersten Zeile bei Menüdefinitionen.
-
- Wie Sie sicherlich wissen, kann TV, abhängig vom Hilfekontext der
- aktuellen View, verschiedene Statuszeilen darstellen, sie aber wie
- eine speichern. Dies geschiet mit der Funktion "NewStatusDef", der
- der Bereich von Hilfenummern übergeben wird, in dem sie die
- nachfolgend definierte Statuszeile darstellen soll. Auch TVMC
- unterstützt diese Möglichkeit von TV ( in TApplication.Idle
- TProgram.Update aufrufen !).
-
- Eine solche Statuszeile wird von Mengenklammern eingeschlossen, um
- sie von anderen Statuszeilen abzugrenzen.
- In der Zeile der öffnenden Mengeklammer folgt die Definition der
- "Hilfekontextbereiches", in dem die jeweilige Statuszeile
- dargestellt werden soll. Die Angabe dieses Bereichs ist optional,
- TVMC verwendet dann die Standardwerte $0 bis $FFFF , d.h. die
- Statuszeile ist immer aktiv. Soll die Statuszeile nur bei einem
- bestimmten Hilfekontext aktiv sein, so genügt die Angabe der
- Nummer bzw. des Symbols.
-
- Die Einträge der Statuszeile beginnen mit dem Text, dann des
- Tastaturcodes und schließlich mit dem zu erzeugenden Kommando. Für
- das Weglassen gilt gleiches wie bei der Definition von Menüs.
-
- Die Anzahl der Statuszeilendefinitionen in einer Statuszeile ist
- beliebig.
-
-
- Beispiele:
-
- * mit TVMC :
- | kbF10 | cmMenu
- ~Alt-X~ Ende | kbAltX | cmQuit
- entspricht in Pascal folgendem Funktionsaufruf:
- NewStatusKey('',kbF10,cmMenu,
- NewStatusKey('~Alt-X~ Ende',kbAltX,cmQuit,
-
-
- ------------------------------------------------------------------
- - 17 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- ...))
-
- * die folgende Definition
-
- #STATLINE StatusZeile
- { hcNoContext
- | kbF10 | cmMenu
- ~Alt-X~ Quit | kbAltX | cmQuit
- ~F4~ New | kbF4 | cmNewWin
- ~Alt-F3~ | kbAltF3 | cmClose
- }
- { hcFileOpen
- ~F1~ Hilfe : Öffnet eine Datei für die TestApplication | kbF1
- | cmHelpFOpen
- }
- { hcFileNew
- ~F1~ Hilfe : Öffnet eine neue Datei zur Bearbeitung | kbF1 |
- cmHelpFNew
- }
- { hcFileSave
- ~F1~ Hilfe : Speichert die aktuelle Datei | kbF1 |
- cmHelpFSave
- }
- #ENDS
-
- entspricht in Pascal :
-
- Statusline:=New(PStatusLine, Init ( R,
- NewStatusDef(hcNoContext,hcNoContext,
- NewStatusKey('',kbF10,cmMenu,
- NewStatusKey('~Alt-X~ Quit',kbAltX,cmQuit,
- NewStatusKey('~F4~ New',kbF4,cmNewWin,
- NewStatusKey('~Alt-F3~ Close',kbAltF3,cmClose,
- nil)))),
- NewStatusDef(hcFileOpen,hcFileOpen,
- NewStatusKey('~F1~ Hilfe | Öffnet eine Datei für die
- TestApplication',kbF1,cmHelp,
- nil),
- NewStatusDef(hcFileNew,hcFileNew,
- NewStatusKey('~F1~ Hilfe | Öffnet eine neue Datei zur
- Bearbeitung',kbF1,cmHelp,
- nil),
- NewStatusDef(hcFileSave,hcFileSave,
- NewStatusKey('~F1~ Hilfe | Speichert die aktuelle
- Datei',kbF1,cmHelp,
- nil),nil
- ))))));
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 18 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
- MCTest
- ------
-
-
-
- MCTest ist, wie Sie in der Einführung gesehen haben, ein
- Testprogramm für Menüleisten und Statuszeilen. Es zeigt Events an,
- auch evCommand-Events. So können Sie überprüfen, ob Sie alles
- richtig gemacht haben. Es benutzt auch eine kontextsensitive
- Statuszeile, sofern sie in der Resourcedatei definiert wurde.
-
- Beim Aufruf von MCTest, können Sie folgende Parameter angegeben:
-
- MCTEST Resourcefilename[.REZ] Menuname Statuslinename [cmUnit]
-
- Der erste Parameter, Resourcefilename, gibt den Namen der zu
- testenden Datei an. Die nächsten beiden geben die Namen der
- Menüleiste und Statuszeile an, die getestet werden sollen.
- Optional kann man noch Name der Datei angeben, in der TVMC die
- cmXXXX-Definitionen gespeichert hat. Nur so kann MCTest die Namen
- der erzeugten Kommandos im Klartext anzeigen, sonst nur deren
- Werte
-
- * MCTest beachtet bei Menüleisten- und Statuszeilennamen in der
- Resourcedatei wie TVMC Groß- und Kleinschreibung.
-
- * Unter MCTEST zu testende Resources müssen das Kommando cmQuit
- definiert haben !
-
- MCTest verwendet die Unit "EVENTWIN" von Danny Thorpe, die sich
- auf der Borland Turbo Pascal 6.0 Goodies-Diskette befand. Das
- "Event-Window" zeigt Ereignisse nur dann an, falls das "Event-
- Window" nicht selektiert ist.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 19 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
-
-
- Tips zu TVMC und MCTest
- -----------------------
-
-
-
- Wenn Sie, wie ich hoffe, häufig mit TVMC arbeiten werden, möchte
- ich Ihnen einige allgemeine Tips zur effektiven Arbeit geben:
-
- - In welchem Verzeichnis sollte TVMC stehen ?
- Am besten installiert man TVMC ins Verzeichnis von Turbo
- Pascal, wenn dieses im Pfad eingebunden ist. Wenn man auch noch
- alle Projekte in verschiedenen Unterverzeichnissen verwaltet,
- hat man in sehr übersichtliche und effektive
- Verzeichnisstruktur. Da aber bei einer derartigen Installation
- die Datei "TVMC.DEF" meist nicht im aktuellen Verzeichnis
- steht, müssen Sie TVMC über die Umgebungsvariable "TVMCDEF"
- bekanntgeben, wo TVMC.DEF steht, z.B. TVMCDEF=C:\TP.
- Nach der Installation muß TVMCDEF von Hand gesetzt werden.
-
- - Verwendung von TVHC.
- Verwendet eine Applikation sowohl TMVC als auch TVHC, den
- Turbo Vision Helpcompiler von Borland, so sollte man zunächst
- sein Menü und Statuszeile schreiben, und dabei die Symbole wie
- in der Helpdatei verwenden. Hat man dann später seine
- Helpdatei fertig und compiliert, so compiliert man seine .MC-
- Datei noch einmal mit
- TVMC ... /DH:helpdefs.pas
- oder verändert seine Parameterdatei entsprechend.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 20 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
-
- Anhang
- ------
-
-
- Definierte TV-Konstanten
- ------------------------
-
-
- cmXXXX-Konstanten:
- ------------------
-
- cmValid = 0; cmQuit = 1; cmError = 2;
- cmMenu = 3; cmClose = 4; cmZoom = 5;
- cmResize = 6; cmNext = 7; cmPrev = 8;
- cmHelp = 9; cmCut = 20; cmCopy = 21;
- cmPaste = 22; cmUndo = 23; cmClear = 24;
- cmTile = 25; cmCascade = 26; cmOK = 10;
- cmCancel = 11; cmYes = 12; cmNo = 13;
- cmDefault = 14; cmReceivedFocus = 50;
- cmReleasedFocus = 51; cmCommandSetChanged = 52;
- cmScrollBarChanged = 53; cmScrollBarClicked = 54;
- cmSelectWindowNo = 55; cmRecordHistory = 56;
-
- hcXXXX-Konstanten:
- ------------------
-
- hcNoContext = 0; hcDragging = 1;
-
- kbXXXX-Konstanten:
- ------------------
-
- kbEsc = $011B; kbAltSpace = $0200; kbCtrlIns = $0400;
- kbShiftIns = $0500; kbCtrlDel = $0600; kbShiftDel = $0700;
- kbBack = $0E08; kbCtrlBack = $0E7F; kbShiftTab = $0F00;
- kbTab = $0F09; kbAltQ = $1000; kbAltW = $1100;
- kbAltE = $1200; kbAltR = $1300; kbAltT = $1400;
- kbAltY = $1500; kbAltU = $1600; kbAltI = $1700;
- kbAltO = $1800; kbAltP = $1900; kbCtrlEnter = $1C0A;
- kbEnter = $1C0D; kbAltA = $1E00; kbAltS = $1F00;
- kbAltD = $2000; kbAltF = $2100; kbAltG = $2200;
- kbAltH = $2300; kbAltJ = $2400; kbAltK = $2500;
- kbAltL = $2600; kbAltZ = $2C00; kbAltX = $2D00;
- kbAltC = $2E00; kbAltV = $2F00; kbAltB = $3000;
- kbAltN = $3100; kbAltM = $3200; kbF1 = $3B00;
- kbF2 = $3C00; kbF3 = $3D00; kbF4 = $3E00;
- kbF5 = $3F00; kbF6 = $4000; kbF7 = $4100;
- kbF8 = $4200; kbF9 = $4300; kbF10 = $4400;
- kbHome = $4700; kbUp = $4800; kbPgUp = $4900;
- kbGrayMinus = $4A2D; kbLeft = $4B00; kbRight = $4D00;
- kbGrayPlus = $4E2B; kbEnd = $4F00; kbDown = $5000;
- kbPgDn = $5100; kbIns = $5200; kbDel = $5300;
- kbShiftF1 = $5400; kbShiftF2 = $5500; kbShiftF3 = $5600;
- kbShiftF4 = $5700; kbShiftF5 = $5800; kbShiftF6 = $5900;
-
-
- ------------------------------------------------------------------
- - 21 -
-
- ------------------------------------------------------------------
- - T V M C - Turbo Vision Menu Compiler V1.00 -
- ------------------------------------------------------------------
-
- kbShiftF7 = $5A00; kbShiftF8 = $5B00; kbShiftF9 = $5C00;
- kbShiftF10 = $5D00; kbCtrlF1 = $5E00; kbCtrlF2 = $5F00;
- kbCtrlF3 = $6000; kbCtrlF4 = $6100; kbCtrlF5 = $6200;
- kbCtrlF6 = $6300; kbCtrlF7 = $6400; kbCtrlF8 = $6500;
- kbCtrlF9 = $6600; kbCtrlF10 = $6700; kbAltF1 = $6800;
- kbAltF2 = $6900; kbAltF3 = $6A00; kbAltF4 = $6B00;
- kbAltF5 = $6C00; kbAltF6 = $6D00; kbAltF7 = $6E00;
- kbAltF8 = $6F00; kbAltF9 = $7000; kbAltF10 = $7100;
- kbCtrlPrtSc = $7200; kbCtrlLeft = $7300; kbCtrlRight = $7400;
- kbCtrlEnd = $7500; kbCtrlPgDn = $7600; kbCtrlHome = $7700;
- kbAlt1 = $7800; kbAlt2 = $7900; kbAlt3 = $7A00;
- kbAlt4 = $7B00; kbAlt5 = $7C00; kbAlt6 = $7D00;
- kbAlt7 = $7E00; kbAlt8 = $7F00; kbAlt9 = $8000;
- kbAlt0 = $8100; kbAltMinus = $8200; kbAltEqual = $8300;
- kbCtrlPgUp = $8400; kbNoKey = $0000;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ------------------------------------------------------------------
- - 22 -
-
-