home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / tvision / tvmc / tvmc.doc < prev    next >
Encoding:
Text File  |  1993-07-28  |  47.4 KB  |  1,354 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.                                    T V M C
  23.  
  24.                           Turbo Vision Menu Compiler
  25.                                  Version 1.00
  26.  
  27.  
  28.  
  29.                     Copyright (C) 1991 by Thomas J. Buckel
  30.       
  31.       ------------------------------------------------------------------
  32.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  33.       ------------------------------------------------------------------
  34.  
  35.  
  36.                                     Inhalt
  37.                                     ------
  38.  
  39.  
  40.  
  41.              1. Einführung                                    3
  42.  
  43.                A. Warum TVMC ?                                3
  44.                B. Features von TVMC                           3
  45.                C. Mitgelieferte Dateien                       4
  46.                D. Installation                                4
  47.                E. Ein Beispiel                                5
  48.  
  49.  
  50.              2. ShareWare, Registrierung und Support          6
  51.  
  52.  
  53.              3. Referenz                                      8
  54.  
  55.                A. Kommandozeilensyntax                        8
  56.                  a. Kommandozeilenparameter, allgemein        8
  57.                  b. Kommandozeilenparameter im Detail         9
  58.                B. .MC Aufbau                                 13
  59.                  a. Definition der Menüleiste                14
  60.                  b. Definition der Statuszeile               17
  61.                C. MCTEST                                     19
  62.  
  63.  
  64.              4. Tips zu TVMC und MCTest                      20
  65.  
  66.  
  67.              5. Anhang                                       21
  68.  
  69.                A. Definierte Konstanten                      21
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.       Eingetragene Warenzeichen wie Turbo Pascal werden ohne Rücksicht
  77.       auf den Inhaber verwendet.
  78.       Der Autor übernimmt keine Haftung für Fehlfunktionen des Programms
  79.       und für daraus entstandene Schäden.
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.       ------------------------------------------------------------------
  92.                                     - 2 -
  93.       
  94.       ------------------------------------------------------------------
  95.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  96.       ------------------------------------------------------------------
  97.  
  98.  
  99.  
  100.                                   Einführung
  101.                                   ----------
  102.  
  103.       Diese Anleitung  setzt Grundkenntnisse  in der  Turbo-Pascal 6.0 /
  104.       Turbo Vision  Programmierung voraus,  insbesondere im  Bereich von
  105.       Resourcefiles.
  106.  
  107.  
  108.  
  109.       Warum TVMC und was ist TVMC ?
  110.       -----------------------------
  111.  
  112.       Wenn Sie  oft oder  ausschließlich mit Turbo Vision (TV) arbeiten,
  113.       so werden  Sie sicher  festgestellt haben,  daß Turbo  Vision sehr
  114.       mächtig  ist  und  man  relativ  leicht  sehr  benutzerfreundliche
  115.       Applikationen erstellen  kann. Aber  TV hat auch einige Nachteile,
  116.       oder besser gesagt "Unübersichtlichkeiten", für den Programmierer,
  117.       zum Beispiel  bei der Erstellung von Dialogboxen, Menüleisten oder
  118.       Statuszeilen. Natürlich  kann man sich hier herausreden und sagen,
  119.       daß man  auch Resourcefiles  erstellen kann,  man muß aber dennoch
  120.       den Quellcode  schreiben. Für  die Erstellung von Dialogboxen gibt
  121.       es z.B.  das Programm  "DLGDSN", mit dem man komfortabel Resourcen
  122.       für Dialogboxen  erstellen kann.  Aber das  Problem beim Schreiben
  123.       oder gar  Ändern des Codes für Menüleisten und Statuszeilen bleibt
  124.       erhalten, denn  wer blickt  denn noch  bei  diesen  Dutzenden  von
  125.       Klammern und NIL-Zeigern durch, wer hat sich nicht schon über eine
  126.       fehlende Klammer bei der Menüdefinition geärgert ?
  127.       Hier setzt  TVMC ein.  Wie der  Name  schon  sagt,  ist  TVMC  ein
  128.       Compiler für  Menüleisten- und Statuszeilendefinitionen, der einen
  129.       ASCII-Text in  ein Resourcefile  verwandelt. Er  verarbeitet sogar
  130.       cmXXXX-, kbXXXX-  und  hcXXXX-Konstanten,  generiert  hcXXXX-  und
  131.       cmXXXX-Units und  kann  auch  noch  vorher  definierte  Konstanten
  132.       beachten.
  133.  
  134.       Zugegeben hat  TVMC aber  auch einen Nachteil, man muß nämlich die
  135.       IDE verlassen,  um TVMC  zu verwenden.  ( Was aber Borlands Schuld
  136.       ist, da  die TP  6.0 IDE  im Gegensatz  zur  TC++  1.0  IDE  keine
  137.       externen Compiler unterstützt.)
  138.  
  139.       P.S.: DLGDSN  befindet sich  auf der  "Goodies"-Diskette zu TP 6.0
  140.       von Borland,  wird aber, soweit ich weiß, von einigen Shareware- /
  141.       PD-Händlern vertrieben.
  142.  
  143.  
  144.  
  145.       Features von TVMC
  146.       -----------------
  147.  
  148.       * Erleichtert die Erstellung und Veränderung von Menü- und
  149.         Statuszeilendefinitionen.
  150.  
  151.       * Generiert Resourcefiles (.REZ).
  152.  
  153.  
  154.       ------------------------------------------------------------------
  155.                                     - 3 -
  156.       
  157.       ------------------------------------------------------------------
  158.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  159.       ------------------------------------------------------------------
  160.  
  161.  
  162.       * Angabe des Hilfekontextes, der Tastenkombination und des
  163.         Kommandos als Symbol oder als Zahl (hex oder dez).
  164.  
  165.       * Generiert UNITs oder Includefiles mit den verwendeten cmXXXX-
  166.         und hcXXXX-Definitionen.
  167.  
  168.       * Von TVMC erstellte hcXXXX- und cmXXXX-Definitionen wahlweise in
  169.         einer oder in zwei Dateien.
  170.  
  171.       * Beachtet automatisch Standard-TV-Konstanten, z.B. hcNoContext
  172.         oder cmQuit, cmMenu usw.
  173.  
  174.       * Verwendet optional Konstantendefinitionen aus eigenen oder z.B.
  175.         von TVHC generierten Units/Includefiles.
  176.  
  177.       * Unterstützt hilfekontextabhängige Statuszeilen (über
  178.         NewStatusDef).
  179.  
  180.       * Generiert selbstverständlich automatisch passende Namen und
  181.         Endungen für die Dateien.
  182.  
  183.       * Freie Position von Menü und Statuszeile.
  184.  
  185.       * Testprogramm MCTest wird mitgeliefert und erlaubt ein ausführ-
  186.         liches Testen der generierten Menüs und Statuszeilen.
  187.  
  188.  
  189.  
  190.       Mitgelieferte Dateien
  191.       ---------------------
  192.  
  193.       Folgende Dateien werden mit TVMC V1.00 ausgeliefert:
  194.           TVMC.EXE        Der Menu-Compiler
  195.           TVMC.DEF        Hilfsdatei für TVMC.EXE
  196.           MCTEST.EXE      Testprogramm für Menü- und Statuszeilenre-
  197.                           sources
  198.           TVMC.DOC        Diese Datei
  199.           ORDER.FRM       Registrierungsformular
  200.           DEMO.MC         Beispielmenüquelltext
  201.           DEMO            Beispielparameterdatei
  202.  
  203.  
  204.  
  205.       Installation von TVMC
  206.       ---------------------
  207.  
  208.       Zur Installation kopieren Sie einfach alle Dateien von der
  209.       Diskette auf Festplatte.
  210.       TVMC sollte sich in einem Verzeichnis befinden, das im Pfad
  211.       eingebunden ist und entweder im TP oder TP\UTILS-Verzeichnis
  212.       stehen.
  213.       In der AUTOEXEC.BAT-Datei fügt man noch die Environmentvariable
  214.       "TVMCDEF" ein, die den Pfad, in dem TVMC.DEF steht, angibt.
  215.  
  216.  
  217.       ------------------------------------------------------------------
  218.                                     - 4 -
  219.       
  220.       ------------------------------------------------------------------
  221.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  222.       ------------------------------------------------------------------
  223.  
  224.  
  225.  
  226.  
  227.       Ein Beispiel
  228.       ------------
  229.  
  230.       Um dieses  Beispiel auszuführen,  sollte TVMC  bereits installiert
  231.       sein.
  232.       Im  folgender   Anleitung  wird   der  Quellcode   für  Menüs  und
  233.       Statuszeilen als ".MC-Quellcode" bezeichnet.
  234.  
  235.       Zu TMVC wird eine Beispieldatei für einen Menüsourcecode (DEMO.MC)
  236.       mitgliefert.  Wenn  Sie  sich  diese  Datei  ansehen,  werden  Sie
  237.       feststellen, daß der Aufbau einer .MC-Quellcodedatei, im Gegensatz
  238.       zu  einer   Menüdefinition  in  TV,  sehr  übersichtlich  und  gut
  239.       gegliedert ist. Um diese Demodatei zu kompilieren starten Sie TVMC
  240.       wie folgt:
  241.  
  242.           TVMC @DEMO
  243.  
  244.       Der Parameter  @DEMO gibt an, daß sich die Kommandozeilenparameter
  245.       für TVMC  im File  DEMO befinden.  Natürlich könnten Sie TVMC auch
  246.       wie folgt aufrufen:
  247.  
  248.           TVMC demo /1:demo
  249.  
  250.       Doch bei  Projekten für  die  man  öfters  die  Menüleiste  ändern
  251.       will/muß, d.h.  in der  Anfangsphase der  Programmierung,  ist  es
  252.       meiner Meinung  nach wesentlich  komfortabler, eine Parameterdatei
  253.       zu verwenden,  da sich  die Dateinamen wahrscheinlich nicht ändern
  254.       werden.
  255.       Ebenso hat  TVMC schon  eine Unit namens "DEMO.PAS" generiert, die
  256.       die Konstanten  für die Menüleiste und die Statuszeile aus DEMO.MC
  257.       enthält.
  258.  
  259.       * Um  eine Resourcedatei  von TVMC  zu verwenden,  sollten die von
  260.         TVMC  generierten   Dateien,  die   die   Konstantendefinitionen
  261.         enthalten,  in   das  Programm   eingebunden  werden,  da  sonst
  262.         Verwirrungen über die Werte der Konstanten entstehen !
  263.  
  264.       Um das  soeben generierte Resourcedatei auszuprobieren, müssen Sie
  265.       MCTest wie folgt starten:
  266.  
  267.           MCTEST DEMO Menu Statusline demo.pas
  268.  
  269.       MCTest ist  eigentlich eine vollständige TV-Applikation, sie dient
  270.       zum testen  der Menüs in der Entwicklungsphase. Auf dem Bildschirm
  271.       sehen sie  das Fenster  "Event Window",  in dem Mausereignisse und
  272.       Kommandoevents angezeigt  werden. Somit  können Sie  gefahrlos die
  273.       funktionsfähigkeit des Menüs testen, ohne erst eine Applikation zu
  274.       schreiben.   Außerdem    beachtet   MCTest   hilfekontextabhängige
  275.       Statuszeilen (siehe Referenz).
  276.  
  277.       * Wichtig beim Testen mit MCTest ist, daß cmQuit definiert wurde.
  278.  
  279.  
  280.       ------------------------------------------------------------------
  281.                                     - 5 -
  282.       
  283.       ------------------------------------------------------------------
  284.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  285.       ------------------------------------------------------------------
  286.  
  287.  
  288.  
  289.  
  290.                 Shareware und Freeware, Lizenz, Registrierung
  291.                 ---------------------------------------------
  292.  
  293.  
  294.  
  295.       Was sind Shareware & Freeware ?
  296.       -------------------------------
  297.  
  298.       Shareware ist Software, die man äußerst preiswert testen kann. Man
  299.       muß sich  nur bei  einem  Versender  gegen  eine  (meist)  geringe
  300.       Kopiergebühr das  Programm zuschicken  lassen oder es sich einfach
  301.       aus einer Mailbox downloaden. So erhält man eine sog. Testversion.
  302.       Wenn man  das Programm  oft  benutzt,  muß  man  sich  beim  Autor
  303.       registrieren lassen  und  erhält  eine  Vollversion,  Support  und
  304.       UpDates.
  305.       Freeware  besorgt   man  sich  wie  Shareware,  erhält  aber  eine
  306.       Vollversion, die man beliebig nutzen kann. Im Gegensatz zu Public-
  307.       Domain-Software gibt der Autor keine Rechte an dem Programm auf.
  308.  
  309.  
  310.       Nutzungslizenz für TVMC
  311.       -----------------------
  312.  
  313.       TVMC ist  für Privatanwender Freeware,d.h. sie können das Programm
  314.       auch  ohne   Registrierung  nach  der  Testphase  weiterhin  legal
  315.       benutzen,  deshalb   ist  diese   Version  auch  in  keiner  Weise
  316.       eingeschränkt. Kommerzielle  Anwender, also  alle die das Programm
  317.       zur  Erstellung   von  Software   benutzten,  die   sie  irgendwie
  318.       vermarkten, müssen  sich nach  einer Testphase bzw. sobald sie mit
  319.       Hilfe  von   TVMC  erstellte   Programme   vermarkten,   bei   mir
  320.       registrieren lassen,  was meiner  Meinung nach  ein faires Angebot
  321.       ist, denn TVMC spart ja vor allem Zeit, die bekanntlich Geld ist.
  322.       Natürlich können sich auch private Anwender zu anderen Konditionen
  323.       registrieren lassen.
  324.       Der Autor behält sich alle Rechte an diesem Programm vor.
  325.  
  326.  
  327.       Registrierung
  328.       -------------
  329.  
  330.       Registrierte Anwender haben folgende Vorzüge :
  331.            - telefonischer Support
  332.            - gedrucktes Handbuch
  333.            - sind für alle folgenden Updates registriert, auch wenn sie
  334.              z.B. von einem PD-Versender gekauft werden.
  335.            - erhalten das nächste Update unaufgefordert und umsonst und
  336.              die folgenden Updates gegen einen Unkostenbeitrag (
  337.              Diskettenkosten,Porto, ca. DM 5,- ) inkl. Handbuch
  338.            - sofortige Information über eine Neuversion
  339.       Nichtregistrierte Privatanwender erhalten schriftlichen Support.
  340.  
  341.  
  342.  
  343.       ------------------------------------------------------------------
  344.                                     - 6 -
  345.       
  346.       ------------------------------------------------------------------
  347.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  348.       ------------------------------------------------------------------
  349.  
  350.  
  351.  
  352.       Registrierungsgebühren :
  353.  
  354.            *  freiwillig für private Anwender:     DM 20,-
  355.  
  356.            *  für kommerzielle Anwender :          DM 50,-
  357.  
  358.       Für weitere Details siehe ORDER.FRM.
  359.  
  360.  
  361.  
  362.       Kritik und Anregungen
  363.       -----------------------
  364.  
  365.       Da ein Programm niemals 100% fehlerfrei und perfekt sein kann, bin
  366.       ich  offen  für  Anregungen  und  konstruktive  Kritik  an  diesem
  367.       Programm  und  werde  auch  versuchen,  die  Vorschläge  in  neuen
  368.       Versionen von  TVMC  zu  beachten.  Ebenso  dankbar  bin  ich  für
  369.       Hinweise    auf     Laufzeitfehler    oder    sonstige    mögliche
  370.       Ungereimtheiten, auch  wenn ich  hoffe, daß  es solche nicht gibt.
  371.       Meine Adresse finden Sie im Kapitel Support oder in "ORDER.FRM".
  372.  
  373.  
  374.       Support
  375.       -------
  376.  
  377.       Nichtregistrierte Privatanwender  und kommerzielle Anwender in der
  378.       Testphase erhalten schriftlichen Support unter der Adresse:
  379.           Thomas Buckel
  380.           Irisstr. 17
  381.           W-8501 Eckental
  382.           Bundesrepublik Deutschland
  383.       Ich werde  mich bemühen,  die Anfragen  so schnell  wie möglich zu
  384.       bearbeiten.
  385.  
  386.  
  387.       Sonstiges
  388.       ---------
  389.  
  390.       Diese Version von TVMC ist nicht eingeschränkt.
  391.       Die Kopiergebühr  für dieses  Programm darf nicht mehr als DM 10,-
  392.       betragen. Versender,  die mehr  verlangen sollten,  dürfen  dieses
  393.       Programm nicht vertreiben.
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.       ------------------------------------------------------------------
  407.                                     - 7 -
  408.       
  409.       ------------------------------------------------------------------
  410.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  411.       ------------------------------------------------------------------
  412.  
  413.  
  414.  
  415.  
  416.                                    Referenz
  417.                                    --------
  418.  
  419.  
  420.                         Kommandozeilenaufruf von TVMC
  421.                         -----------------------------
  422.  
  423.  
  424.       Kommandozeilenparameter, allgemein:
  425.       -----------------------------------
  426.  
  427.       Es gilt folgende allgemeine Syntax:
  428.  
  429.       TVMC SourceFile[.MC] [RezFile[.REZ]] [/U|I]
  430.            [/H[:HelpFile[.HLC|.PAS]]] [/C[:CommandFile[.CMD|.PAS]]]
  431.            [/1[:FileName[.INC|.PAS]]] [/DH:HelpDef[.PAS]]
  432.            [/DC:CommandDefs[.PAS]]
  433.  
  434.       oder:
  435.  
  436.       TVMC @ParamFile
  437.  
  438.  
  439.       Allgemein gilt:
  440.        * Das Symbol FileName[.EXT] bedeutet, daß die Endung der Datei
  441.          FileName von TVMC als .EXT angenommen wird. Wird eine Endung
  442.          angegeben, so wird diese verwendet.
  443.        * Steht ein Parameter in eckigen Klammern, so ist er optional und
  444.          TVMC verwendet eine Voreinstellung für diesen.
  445.        * [/x|y] bedeutet, daß man nur einen von beiden Parametern
  446.          angeben darf.
  447.  
  448.       Kurze Erklärung der einzelnen Parameter ( für eine genaue
  449.       Beschriebung siehe weiter unten ) :
  450.  
  451.         SourceFile     : Name der Quelldatei
  452.         RezFile        : Name der zu erzeugenden Resourcedatei. Falls
  453.                          diese Datei vorhanden ist, wird sie
  454.                          überschrieben
  455.         /U|I           : TVMC soll entweder Units (/U) oder
  456.                          Includedateien (/I) als hcXXXX- und cmXXXX-
  457.                          Definitionsdateien generieren. /U ist
  458.                          Voreinstellung. Dieser Parameter muß vor den
  459.                          Parametern /H,/C und /1 stehen.
  460.         /H:HelpFile    : Name der hcXXXX-Konstantendatei, die von TVMC
  461.                          generiert werden soll. Diese Datei erhält die
  462.                          Endung .PAS, falls Units erzeugt werden, und
  463.                          .HLC bei Includes. Sie kann direkt in
  464.                          Pascalprogramme eingebunden werden (siehe
  465.                          Beispiel). Falls diese Datei vorhanden ist,
  466.                          wird sie überschrieben.
  467.  
  468.  
  469.       ------------------------------------------------------------------
  470.                                     - 8 -
  471.       
  472.       ------------------------------------------------------------------
  473.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  474.       ------------------------------------------------------------------
  475.  
  476.         /C:CommandFile : Name der cmXXXX-Konstantendatei, für sie gilt
  477.                          gleiches, wie für /H:HelpFile.
  478.         /1:Filename    : wird dieser Parameter angegeben, so erzeugt
  479.                          TVMC nur eine Konstantendatei für cmXXXX und
  480.                          hcXXXX, entweder eine Unit oder ein
  481.                          Includefile. Darf nur alternativ zu /H: und /C:
  482.                          verwendet werden.
  483.         /DH:HelpDefs   : Diese Datei enthält schon Definitionen für
  484.                          hcXXXX-Konstanten, die entweder selbst
  485.                          geschrieben wurden oder z.B. von TVHC erzeugt
  486.                          wurden.
  487.         /DC:CommandDefs: Wie /DH:HelpDefs, nur für cmXXXX-Konstanten
  488.  
  489.         @FileName      : Die Datei FileName ist eine Parameterdatei und
  490.                          soll bei dieser Kompilierung verwendet werden.
  491.  
  492.  
  493.  
  494.       Die Parameter im Detail:
  495.       ------------------------
  496.  
  497.  
  498.       SourceFile[.MC]
  499.       ----------------
  500.  
  501.       Dies  ist  die  Quelldatei,  die  Definition  von  Menüleiste  und
  502.       Statuszeile enthält.  Ihr Aufbau  wird in  einem  eigenen  Kapitel
  503.       beschrieben.
  504.  
  505.  
  506.  
  507.       RezFile[.REZ]
  508.       -------------
  509.  
  510.       Name,  der   zu  erzeugenden   Resourcedatei.  Sie   enthält   die
  511.       Informationen, um in TV über das Objekt "TResourceFile" eingeladen
  512.       zu werden.
  513.  
  514.       Beispiel: Die Resourcedatei DEMO.REZ enthält die Menüleiste "Menu"
  515.       und die  Statuszeile "StatLine". Der Rumpf eines TV-Programms, das
  516.       diese Resource verwendet, würde etwa so aussehen:
  517.  
  518.         {...}
  519.         TYPE      TMyApp = OBJECT ( TApplication );
  520.                               {...}
  521.                               PROCEDURE InitMenuBar; VIRTUAL;
  522.                               PROCEDURE InitStatusLine; VIRTUAL;
  523.                               {...}
  524.                            END;
  525.         {...}
  526.         VAR  RezFile   : TResourceFile;
  527.              RezStream : PBufStream;
  528.         {...}
  529.         CONSTRUCTOR TMyApp.Init;
  530.  
  531.  
  532.       ------------------------------------------------------------------
  533.                                     - 9 -
  534.       
  535.       ------------------------------------------------------------------
  536.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  537.       ------------------------------------------------------------------
  538.  
  539.          BEGIN
  540.             {...}
  541.             RegisterMenus;
  542.             RezStream:=New(PBufStream,Init('DEMO.REZ',stOpenRead,$100));
  543.             RezFile.Init(RezStream);
  544.             TApplication.Init; { muß nach RezFile.Init stehen !!! }
  545.             {...}
  546.          END;
  547.  
  548.         PROCEDURE TMyApp.InitMenuBar;
  549.          BEGIN
  550.             MenuBar:=PMenuBar(RezFile.Get('Menu'));
  551.          END;
  552.         PROCEDURE TMyApp.InitStatusLine;
  553.          BEGIN
  554.             StatusLine:=PStatusLine(RezFile.Get('StatLine'));
  555.          END;
  556.         {...}
  557.  
  558.  
  559.  
  560.       /U|I, /H[:FileName], /C[:FileName], /1[:FileName]
  561.       -------------------------------------------------
  562.  
  563.       Der Parameter  /U bzw.  /I gibt  an, ob  ein Includefile oder eine
  564.       Unit erzeugt  werden soll. Dieser Parameter ist maßgeblich für die
  565.       Parameter  /H,/C   und  /1  und  muß  vor  ihnen  stehen.  Die  so
  566.       erzeugte(n)  Datei(en)   werden  benutzt,   um  im   .MC-Quellcode
  567.       Konstanten zu  verwenden. Die  verwendeten Konstanten  werden  von
  568.       TVMC zu  einer Unit oder einer Includedatei zusammengefaßt und man
  569.       kann sie  in den  Pascal-Quellcode über  Uses oder  {$I  FileName}
  570.       einbinden  und  so  im  Pascalprogramm  ohne  sonstige  Definition
  571.       verwendent.
  572.       TVMC kümmert sich automatisch um den richtigen Wert der Konstanten
  573.       und Standard-TurboVision-Konstanten, wie cmQuit, hcNoContext usw.,
  574.       werden natürlich nicht in die erzeugten Dateien mitaufgenommen.
  575.       Desweiteren besteht  die Möglichkeit,  statt Symbolen Zahlen ( hex
  576.       oder dezimal  ) im  .MC-Quellcode zu verwenden oder Konstanten aus
  577.       Units unter TVMC zu verwenden ( siehe /DH,/DC ).
  578.  
  579.       Wird einer  der Parameter  ohne Dateinamen ( /1,/H,/C ) angegeben,
  580.       so verwendet TVMC folgende Vorgaben:
  581.                          Unit                Include
  582.       /1             SourceName.PAS      SourceName.INC
  583.       /H             SourceName_H.PAS    SourceName.HLC
  584.       /C             SourceName_C.PAS    SourceName.CMD
  585.  
  586.       Falls SourceName  bei /H  oder /C zu lange ist, werden die letzten
  587.       beiden Buchstaben automatisch für _H und _C überschrieben.
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.       ------------------------------------------------------------------
  596.                                     - 10 -
  597.       
  598.       ------------------------------------------------------------------
  599.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  600.       ------------------------------------------------------------------
  601.  
  602.  
  603.       /DH:FileName, /DC:FileName
  604.       --------------------------
  605.  
  606.       Angenommen, Sie verwenden TVHC um eine Helpdatei zu erzeugen, dann
  607.       erzeugt TVHC eine Unit mit den Konstanten. Wenn Sie jetzt mit TVMC
  608.       eine Menüleiste  kompilieren, dann  müßten Sie, wenn Sie die Hilfe
  609.       verwenden wollen,  sich die  Werte der einzelnen hcXXXX-Konstanten
  610.       merken und sie im .MC-Quellcode als Zahlen angegeben.
  611.       Da diese  Methode im  grassen Gegensatz  zum Sinn  von TVMC steht,
  612.       können Sie vordefinierte Konstanten verwenden, die TVMC aus Units,
  613.       aus Includedateien oder anderen Dateien ausliest.
  614.       TVMC der Aufbau einer solchen Datei kann relativ beliebig sein, es
  615.       gibt aber folgendes zu beachten:
  616.       * pro Zeile nur eine Definition
  617.       * TVMC  wertet nur  Zeilen  mit  Gleichheitszeichen  aus  und  die
  618.         definierte Konstante muß mit cm oder hc beginnen
  619.       * die Zeilen müssen nicht durch eine Semikolon abgeschlossen sein.
  620.  
  621.       Deshalb   sollten   sie   nur   Units   angeben,   die   lediglich
  622.       Konstantendefinitionen enthalten, um keine Fehler zu provozieren.
  623.  
  624.       Beispiele:
  625.        1) Für die Verwendung einer Unit
  626.             UNIT PreDefHelp;
  627.             INTERFACE
  628.             CONST
  629.                  hcFileOpen    = 10000;
  630.                  hcFileExit    = 10001;
  631.                  {...}
  632.             IMPLEMENTATION
  633.             END.
  634.        2) Für ein Includefile:
  635.             CONST
  636.                  hcFileOpen    = 10000;
  637.                  hcFileExit    = 10001;
  638.                  {...}
  639.        3) Für eine andere Datei:
  640.            hcFileOpen = 10000
  641.            hcFileExit = 10001
  642.  
  643.       Sie sehen,  daß diese  Dateien  grundsätzlich  den  selben  Aufbau
  644.       haben.
  645.  
  646.  
  647.  
  648.       @FileName - ParameterFiles
  649.       --------------------------
  650.  
  651.       Parameterdateien  erleichtern   die  Arbeit  ungemein,  denn  TVMC
  652.       braucht nur  mit ihrem  Namen aufgerufen  werden,  die  restlichen
  653.       Parameter stehen  in der  Datei. Besonders  bei Projekten,  wo der
  654.       .MC-Quellcode  öfters   kompiliert  werden   muß,  sind  sie  sehr
  655.       effektiv.
  656.  
  657.  
  658.       ------------------------------------------------------------------
  659.                                     - 11 -
  660.       
  661.       ------------------------------------------------------------------
  662.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  663.       ------------------------------------------------------------------
  664.  
  665.       Ein Parameterdatei  ist eine  ASCII-Datei, bei  der in jeder Zeile
  666.       ein Kommandozeilenparameter von TVMC steht.
  667.  
  668.       Beispiel :  DEMO-Parameterdatei:
  669.                     DEMO.MC
  670.                     DEMO1.REZ
  671.                     /U
  672.                     /1:DEMO_U.PAS
  673.  
  674.       Ansonsten gilt  für die  Parameter  in  einer  Parameterdatei  das
  675.       gleiche wie von der Kommandozeile.
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.       ------------------------------------------------------------------
  722.                                     - 12 -
  723.       
  724.       ------------------------------------------------------------------
  725.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  726.       ------------------------------------------------------------------
  727.  
  728.  
  729.  
  730.                          Aufbau eines .MC-Quellcodes
  731.                          ---------------------------
  732.  
  733.  
  734.  
  735.       Ein  .MC-Quellcode   hat  folgenden,   allgemeinen  Aufbau  (  ...
  736.       markieren Auslassungen , <> Symbolnamen ) :
  737.  
  738.  
  739.          #MENU <MenuName>
  740.          {...}
  741.          #ENDM
  742.  
  743.          #STATLINE <StatLineName>
  744.          {...}
  745.          #ENDS
  746.  
  747.  
  748.       Logischerweise wird  im Bereich von #MENU die Menüleiste definiert
  749.       und von  #STATLINE  diee  Statuszeile.  In  den  beiden  folgenden
  750.       Abschnitten   wird   der   Aufbau   dieser   Bereiche   detailiert
  751.       beschrieben. Zu  sagen bleibt noch, daß ein .MC-Quellcode auch nur
  752.       eine von  beiden Definitionen enthalten darf, maximal aber je eine
  753.       von beiden.
  754.  
  755.       Falls mehrere  Menüleisten in  einem Programm  benötigt werden, so
  756.       müssen   mehere    Resourcefiles   verwendet   werden,   das   man
  757.       Resourcefiles    nicht    mit    "COPY    r1.rez+r2.rez    rn.rez"
  758.       zusammenkopieren kann.
  759.  
  760.  
  761.       Ein den nächsten beiden Abschnitten gilt folgende Symbolik:
  762.  
  763.        * hcXXXX : Hilfekontext für ein Turbo Vision Objekt.
  764.        * cmXXXX : Kommando, das erzeugt werden soll.
  765.        * kbXXXX : Symbol für eine Tastenkombination ( wie in TV ).
  766.  
  767.                   Diese Symbole  können als Konstanten, wie hcNoContext,
  768.                   hcFileOpen, cmFileOpen oder kbAltX, eingegeben werden.
  769.                   Dabei  ist  zu  beachten,  daß  die  Symbole  mit  den
  770.                   passenden ersten  beiden  Buchstaben  beginnen,  sonst
  771.                   meldet TVMC  einen Fehler.  Falls die  Konstanten noch
  772.                   nicht  vorher   definiert  worden   sind  bzw.   keine
  773.                   Standardkonstanten von TV sind, werden sie später dann
  774.                   in   der    Konstantendefinitionsdatei    gespeichert.
  775.                   Außerdem  kann  man  statt  eines  Symbols  eine  Zahl
  776.                   angegeben,  die   dezimal  oder   hexadezimal  (   mit
  777.                   vorangestelltem $ ) sein darf.
  778.  
  779.        *  <Text> :  ASCII-String, der meist für Menüpunkte steht. In der
  780.                   Praxis wird  er allerdings  ohne die Klammern und ohne
  781.                   Anführungszeichen angegeben.  Außerdem  entfernt  TVMC
  782.  
  783.  
  784.       ------------------------------------------------------------------
  785.                                     - 13 -
  786.       
  787.       ------------------------------------------------------------------
  788.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  789.       ------------------------------------------------------------------
  790.  
  791.                   Leerzeichen vor und nach dem String. Deshalb wird z.B.
  792.                   der Text in der folgenden Zeile
  793.                          Datei öffnen  | .........
  794.                           |
  795.                           +-> zu 'Datei öffnen'.
  796.       Dies ist  in der Praxis sehr nützlich, da man seinen .MC-Quellcode
  797.       beliebig mit  Leerzeichen in  eine übersichtlichere  Form  bringen
  798.       kann.
  799.  
  800.       Bei Konstanten  und Schlüsselwörtern macht TVMC keinen Unterschied
  801.       zwischen Groß- und Kleinschreibung.
  802.  
  803.  
  804.       Aufbau einer Menüleistendefinition
  805.       ----------------------------------
  806.  
  807.       Eine Menüleistendefinition hat allgemeine folgenden Aufbau:
  808.  
  809.         #MENU <Menu> [x1,y1,x2,y2]
  810.         <SubMenuName> | hcXXXX
  811.         {
  812.            <ItemName> | <KeyStr> | kbXXXX | cmXXXX | hcXXXX
  813.            ...
  814.         }
  815.         <SubMenuName> | hcXXXX
  816.         {
  817.            ...
  818.         }
  819.         ...
  820.         #ENDM
  821.  
  822.       Die Menüdefinition  wird durch das Schlüsselwort "#MENU" eröffnet.
  823.       In der  gleichen Zeile  folgt dann  der Name,  unter  dem  sie  im
  824.       Resourcefile abgelegt  wird. Beim Einladen des Resourcefiles unter
  825.       TV muß  man auf  die richtige  Groß- und  Kleinschreibung  achten.
  826.       Optional kann man Position und Größe der Menüleiste angeben. Diese
  827.       kann i.A.  weggelassen werden,  TVMC verwendet  die  Standardwerte
  828.       0,0,80,1.
  829.  
  830.       Die nächste Zeile im Quellcode enthält den Namen eines Untermenüs,
  831.       der in  der Statuszeile  erscheint. Zusätzlich  gibt man in dieser
  832.       Zeile noch den Hilfekontext, durch '|' (Alt-124) getrennt, an. Nun
  833.       folgt   die   Definition   des   Untermenüs,   eingeschlossen   in
  834.       Mengenklammern (  '{','}' ),  die jeweils  in  einer  extra  Zeile
  835.       stehen müssen.
  836.  
  837.       * Im  Allgemeinen   kann  man   sagen,  daß   die  Parameter   der
  838.         Funktionsaufrufe unter  TV im  .MC-Quellcode durch '|' (Alt-124)
  839.         getrennt werden.  Darauf wird  in  den  folgenden  Zeilen  nicht
  840.         explizit hingewiesen.
  841.  
  842.       Die folgendenden  Definitionen  der  einzelnen  Menüpunkte,  würde
  843.       unter TV mit der Funtion "NewItem" erstellt werden.
  844.  
  845.  
  846.  
  847.       ------------------------------------------------------------------
  848.                                     - 14 -
  849.       
  850.       ------------------------------------------------------------------
  851.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  852.       ------------------------------------------------------------------
  853.  
  854.       Eine solche  Definition beginnt  mit dem  Namen  des  Menüpunktes,
  855.       gefolgt von  einem String,  der den  Tastencode im  Menüanzeigt. (
  856.       Unter  TV   :  NewItem("Itemname","KeyStr",....   )  ).  Soll  der
  857.       Tastencode nicht angezeigt werden ( also Leerstring unter TV ), so
  858.       gibt man z.B. folgende Zeilen an, die alle gleichwertig sind :
  859.          Datei öffnen   |    | ....
  860.          Datei öffnen   ||
  861.          Datei öffnen||
  862.       Natürlich wird  der Quelltext  nicht übersichtlicher, wenn man mit
  863.       Leerzeichen  spart,  man  sollte  größzügig  formatieren  (  siehe
  864.       DEMO.MC ).
  865.       Als nächsten folgt der Tastaturcode, mit dem man das Kommando ohne
  866.       Menü ausführen kann angegeben, dann der zu erzeugende Kommandocode
  867.       und schließlich  der Hilfekontext.Wird  für diese  Konstanten kein
  868.       Wert angegeben, so werden Standardwerte eingesetzt.
  869.  
  870.       Wenn man  unter TV  einen Menüteil  vom anderen abgrenzen will, so
  871.       fügt man  die Funktion "NewLine" ein. TVMC kann dies auch, man muß
  872.       nur eine Zeile einfügen, die nur eine Minuszeichen enthät.
  873.  
  874.       Auch  bei   der   Anzahl   der   Menüpunkte   macht   TVMC   keine
  875.       Einschränkungen.
  876.  
  877.  
  878.       Beispiele :
  879.  
  880.        * folgende Defintionen für einen Menüpunkt sind absolut
  881.          gleichwertig :
  882.           Datei öffnen|F3|kbF3|cmFileOpen|hcNoContext
  883.           Datei öffnen  | F3  |  KBF3 | cmFileOpen  | HCnOcONTEXT
  884.           Datei öffnen  | F3  |  kbF3 | cmFileOpen  | 0
  885.  
  886.        * Umsetzung zu TV / Default-Werte
  887.            Datei öffnen | | | | |
  888.          entspricht in TV:
  889.            NewItem('Datei öffnen','',kbNoKey,$FFFF,hcNoContext,...);
  890.  
  891.        * schließlich noch eine komplette Menüdefinition:
  892.  
  893.         #MENU HauptMenue
  894.         ~D~atei | hcNoContext
  895.         {
  896.          ~Ö~ffnen          | F3  | kbF3   | cmFileOpen    | hcFileOpen
  897.          ~N~eu             |     |        | cmFileNew     | hcFileName
  898.          ~S~peichern       | F2  | kbF2   | cmFileSave    | hcFileSave
  899.          Speichern ~u~nter |     |        | cmFileSaveAs  | hcFSaveAs
  900.          ~A~lles speichern |     |        | cmFileSaveAll | hcFSaveAll
  901.          -
  902.          ~V~erz. wechseln  |     |        | cmFileChDir   | hcNoContext
  903.          ~D~rucken         |     |        | cmFilePrint   | hcNoContext
  904.          ~I~nfo            |     |        | cmFileInfo    | hcNoContext
  905.          D~O~S-Shell       |     |        | cmFileShell   | hcNoContext
  906.          ~E~nde            |Alt-X| kbAltX | cmQuit        | hcNoContext
  907.         }
  908.  
  909.  
  910.       ------------------------------------------------------------------
  911.                                     - 15 -
  912.       
  913.       ------------------------------------------------------------------
  914.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  915.       ------------------------------------------------------------------
  916.  
  917.         ~B~earbeiten|hcNoContext
  918.         {
  919.          ~A~usschneiden    |     |        | cmCut         | hcNoContext
  920.          ~K~opieren        |     |        | cmCopy        | hcNoContext
  921.         }
  922.         ~H~ilfe|hcNoContext
  923.         {
  924.          ~I~nfo...         |     |        | cmHelpInfo    | hcNoContext
  925.         }
  926.         #ENDM
  927.  
  928.          entspricht folgendem Pascalcode :
  929.  
  930.           MenuBar:=New(PMenuBar,Init(R,NewMenu(
  931.             NewSubMenu('~D~atei',hcNoContext,NewMenu(
  932.              NewItem('~Ö~ffnen','F3',kbF3,cmFileOpen,hcFileOpen,
  933.              NewItem('~N~eu','',0,cmFileNew,hcFileNew,
  934.              NewItem('~S~peichern','F2',kbF2,cmFileSave,hcFileSave,
  935.              NewItem('Speichern ~u~nter','',0,cmFileSaveAs,hcFSaveAs,
  936.              NewItem('~A~lles speichern','',0,cmFileSaveAll, hcFSaveAll,
  937.              NewLine(
  938.              NewItem('~V~erzeichnis wechseln','',0,cmFileChangeDir,
  939.           hcNoContext,
  940.              NewItem('~D~rucken','',0,cmFilePrint,hcNoContext,
  941.              NewItem('~I~nfo','',0,cmFileInfo,hcNoContext,
  942.              NewItem('D~O~S-Shell','',0,cmFileShell,hcNoContext,
  943.              NewItem('~E~nde','Alt-X',kbAltX,cmQuit,hcNoContext,
  944.              nil)))))))))))),
  945.             NewSubMenu('~B~earbeiten',hcNoContext,NewMenu(
  946.              NewItem('~A~usschneiden','',0,$FFFF,hcNoContext,
  947.              NewItem('~K~opieren','',0,$FFFF,hcNoContext,
  948.              nil))),
  949.             NewSubMenu('~H~ilfe',hcNoContext,NewMenu(
  950.              NewItem('~I~nfo...','',0,$FFFF,hcNoContext,
  951.              nil)),
  952.              nil)))
  953.             )));
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.       ------------------------------------------------------------------
  974.                                     - 16 -
  975.       
  976.       ------------------------------------------------------------------
  977.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  978.       ------------------------------------------------------------------
  979.  
  980.  
  981.       Aufbau der Statuszeilendefinition
  982.       ---------------------------------
  983.  
  984.       Die Statuszeilendefinition hat folgenden allgemeinen Aufbau:
  985.  
  986.       #STATLINE <Statuszeilenname> [x1,y1,x2,y2]
  987.       { [hcXXXX [, hcXXXX]]
  988.         <Text> | kbXXXX | cmXXXX
  989.         ...
  990.       }
  991.       { [hcXXXX [, hcXXXX]]
  992.         ...
  993.       }
  994.       ...
  995.       #ENDS
  996.  
  997.       Der Aufbau  der ersten Zeile mit dem Schlüsselwort "#STATLINE" ist
  998.       analog zur ersten Zeile bei Menüdefinitionen.
  999.  
  1000.       Wie Sie  sicherlich wissen, kann TV, abhängig vom Hilfekontext der
  1001.       aktuellen View, verschiedene Statuszeilen darstellen, sie aber wie
  1002.       eine speichern. Dies geschiet mit der Funktion "NewStatusDef", der
  1003.       der Bereich  von Hilfenummern  übergeben  wird,  in  dem  sie  die
  1004.       nachfolgend definierte  Statuszeile  darstellen  soll.  Auch  TVMC
  1005.       unterstützt  diese  Möglichkeit  von  TV  (  in  TApplication.Idle
  1006.       TProgram.Update aufrufen !).
  1007.  
  1008.       Eine solche Statuszeile wird von Mengenklammern eingeschlossen, um
  1009.       sie von anderen Statuszeilen abzugrenzen.
  1010.       In der  Zeile der  öffnenden Mengeklammer folgt die Definition der
  1011.       "Hilfekontextbereiches",  in   dem   die   jeweilige   Statuszeile
  1012.       dargestellt werden  soll. Die Angabe dieses Bereichs ist optional,
  1013.       TVMC verwendet  dann die  Standardwerte $0  bis $FFFF  , d.h.  die
  1014.       Statuszeile ist  immer aktiv.  Soll die  Statuszeile nur bei einem
  1015.       bestimmten Hilfekontext  aktiv sein,  so  genügt  die  Angabe  der
  1016.       Nummer bzw. des Symbols.
  1017.  
  1018.       Die Einträge  der Statuszeile  beginnen mit  dem  Text,  dann  des
  1019.       Tastaturcodes und schließlich mit dem zu erzeugenden Kommando. Für
  1020.       das Weglassen gilt gleiches wie bei der Definition von Menüs.
  1021.  
  1022.       Die Anzahl  der Statuszeilendefinitionen  in einer Statuszeile ist
  1023.       beliebig.
  1024.  
  1025.  
  1026.       Beispiele:
  1027.  
  1028.       * mit TVMC :
  1029.                        |  kbF10   |  cmMenu
  1030.           ~Alt-X~ Ende |  kbAltX  |  cmQuit
  1031.         entspricht in Pascal folgendem Funktionsaufruf:
  1032.            NewStatusKey('',kbF10,cmMenu,
  1033.            NewStatusKey('~Alt-X~ Ende',kbAltX,cmQuit,
  1034.  
  1035.  
  1036.       ------------------------------------------------------------------
  1037.                                     - 17 -
  1038.       
  1039.       ------------------------------------------------------------------
  1040.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  1041.       ------------------------------------------------------------------
  1042.  
  1043.            ...))
  1044.  
  1045.       * die folgende Definition
  1046.  
  1047.          #STATLINE StatusZeile
  1048.          { hcNoContext
  1049.                            | kbF10     | cmMenu
  1050.            ~Alt-X~ Quit    | kbAltX    | cmQuit
  1051.            ~F4~ New        | kbF4      | cmNewWin
  1052.            ~Alt-F3~        | kbAltF3   | cmClose
  1053.          }
  1054.          { hcFileOpen
  1055.            ~F1~ Hilfe : Öffnet eine Datei für die TestApplication | kbF1
  1056.          | cmHelpFOpen
  1057.          }
  1058.          { hcFileNew
  1059.            ~F1~ Hilfe : Öffnet eine neue Datei zur Bearbeitung | kbF1 |
  1060.          cmHelpFNew
  1061.          }
  1062.          { hcFileSave
  1063.            ~F1~ Hilfe : Speichert die aktuelle Datei | kbF1 |
  1064.          cmHelpFSave
  1065.          }
  1066.          #ENDS
  1067.  
  1068.         entspricht in Pascal :
  1069.  
  1070.          Statusline:=New(PStatusLine, Init ( R,
  1071.            NewStatusDef(hcNoContext,hcNoContext,
  1072.              NewStatusKey('',kbF10,cmMenu,
  1073.              NewStatusKey('~Alt-X~ Quit',kbAltX,cmQuit,
  1074.              NewStatusKey('~F4~ New',kbF4,cmNewWin,
  1075.              NewStatusKey('~Alt-F3~ Close',kbAltF3,cmClose,
  1076.            nil)))),
  1077.            NewStatusDef(hcFileOpen,hcFileOpen,
  1078.              NewStatusKey('~F1~ Hilfe | Öffnet eine Datei für die
  1079.          TestApplication',kbF1,cmHelp,
  1080.              nil),
  1081.            NewStatusDef(hcFileNew,hcFileNew,
  1082.              NewStatusKey('~F1~ Hilfe | Öffnet eine neue Datei zur
  1083.          Bearbeitung',kbF1,cmHelp,
  1084.              nil),
  1085.            NewStatusDef(hcFileSave,hcFileSave,
  1086.              NewStatusKey('~F1~ Hilfe | Speichert die aktuelle
  1087.          Datei',kbF1,cmHelp,
  1088.              nil),nil
  1089.            ))))));
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.       ------------------------------------------------------------------
  1100.                                     - 18 -
  1101.       
  1102.       ------------------------------------------------------------------
  1103.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  1104.       ------------------------------------------------------------------
  1105.  
  1106.  
  1107.  
  1108.                                     MCTest
  1109.                                     ------
  1110.  
  1111.  
  1112.  
  1113.       MCTest  ist,   wie  Sie  in  der  Einführung  gesehen  haben,  ein
  1114.       Testprogramm für Menüleisten und Statuszeilen. Es zeigt Events an,
  1115.       auch evCommand-Events.  So können  Sie überprüfen,  ob  Sie  alles
  1116.       richtig gemacht  haben.  Es  benutzt  auch  eine  kontextsensitive
  1117.       Statuszeile, sofern sie in der Resourcedatei definiert wurde.
  1118.  
  1119.       Beim Aufruf von MCTest, können Sie folgende Parameter angegeben:
  1120.  
  1121.       MCTEST Resourcefilename[.REZ] Menuname Statuslinename [cmUnit]
  1122.  
  1123.       Der erste  Parameter, Resourcefilename,  gibt  den  Namen  der  zu
  1124.       testenden Datei  an. Die  nächsten  beiden  geben  die  Namen  der
  1125.       Menüleiste  und   Statuszeile  an,  die  getestet  werden  sollen.
  1126.       Optional kann  man noch  Name der  Datei angeben,  in der TVMC die
  1127.       cmXXXX-Definitionen gespeichert  hat. Nur so kann MCTest die Namen
  1128.       der erzeugten  Kommandos im  Klartext anzeigen,  sonst  nur  deren
  1129.       Werte
  1130.  
  1131.       * MCTest  beachtet bei  Menüleisten- und  Statuszeilennamen in der
  1132.         Resourcedatei wie TVMC Groß- und Kleinschreibung.
  1133.  
  1134.       * Unter  MCTEST zu  testende Resources  müssen das Kommando cmQuit
  1135.         definiert haben !
  1136.  
  1137.       MCTest verwendet  die Unit  "EVENTWIN" von  Danny Thorpe, die sich
  1138.       auf der  Borland Turbo  Pascal 6.0  Goodies-Diskette  befand.  Das
  1139.       "Event-Window" zeigt  Ereignisse nur  dann an,  falls das  "Event-
  1140.       Window" nicht selektiert ist.
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.       ------------------------------------------------------------------
  1163.                                     - 19 -
  1164.       
  1165.       ------------------------------------------------------------------
  1166.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  1167.       ------------------------------------------------------------------
  1168.  
  1169.  
  1170.  
  1171.  
  1172.                            Tips zu TVMC und MCTest
  1173.                            -----------------------
  1174.  
  1175.  
  1176.  
  1177.       Wenn Sie,  wie ich  hoffe, häufig mit TVMC arbeiten werden, möchte
  1178.       ich Ihnen einige allgemeine Tips zur effektiven Arbeit geben:
  1179.  
  1180.       - In welchem Verzeichnis sollte TVMC stehen ?
  1181.          Am besten  installiert  man  TVMC  ins  Verzeichnis  von  Turbo
  1182.          Pascal, wenn dieses im Pfad eingebunden ist. Wenn man auch noch
  1183.          alle Projekte  in verschiedenen  Unterverzeichnissen verwaltet,
  1184.          hat    man     in    sehr    übersichtliche    und    effektive
  1185.          Verzeichnisstruktur. Da  aber bei einer derartigen Installation
  1186.          die Datei  "TVMC.DEF"  meist  nicht  im  aktuellen  Verzeichnis
  1187.          steht, müssen  Sie TVMC  über die  Umgebungsvariable  "TVMCDEF"
  1188.          bekanntgeben, wo TVMC.DEF steht, z.B. TVMCDEF=C:\TP.
  1189.          Nach der Installation muß TVMCDEF von Hand gesetzt werden.
  1190.  
  1191.       - Verwendung von TVHC.
  1192.           Verwendet eine  Applikation sowohl  TMVC als  auch  TVHC,  den
  1193.           Turbo Vision  Helpcompiler von Borland, so sollte man zunächst
  1194.           sein Menü und Statuszeile schreiben, und dabei die Symbole wie
  1195.           in  der   Helpdatei  verwenden.  Hat  man  dann  später  seine
  1196.           Helpdatei fertig  und compiliert, so compiliert man seine .MC-
  1197.           Datei noch einmal mit
  1198.              TVMC ... /DH:helpdefs.pas
  1199.           oder verändert seine Parameterdatei entsprechend.
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.       ------------------------------------------------------------------
  1226.                                     - 20 -
  1227.       
  1228.       ------------------------------------------------------------------
  1229.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  1230.       ------------------------------------------------------------------
  1231.  
  1232.  
  1233.                                     Anhang
  1234.                                     ------
  1235.  
  1236.  
  1237.                            Definierte TV-Konstanten
  1238.                            ------------------------
  1239.  
  1240.  
  1241.       cmXXXX-Konstanten:
  1242.       ------------------
  1243.  
  1244.         cmValid   = 0;   cmQuit    = 1;   cmError   = 2;
  1245.         cmMenu    = 3;   cmClose   = 4;   cmZoom    = 5;
  1246.         cmResize  = 6;   cmNext    = 7;   cmPrev    = 8;
  1247.         cmHelp    = 9;   cmCut     = 20;  cmCopy    = 21;
  1248.         cmPaste   = 22;  cmUndo    = 23;  cmClear   = 24;
  1249.         cmTile    = 25;  cmCascade = 26;  cmOK      = 10;
  1250.         cmCancel  = 11;  cmYes     = 12;  cmNo      = 13;
  1251.         cmDefault = 14;  cmReceivedFocus     = 50;
  1252.         cmReleasedFocus     = 51;  cmCommandSetChanged = 52;
  1253.         cmScrollBarChanged  = 53;  cmScrollBarClicked  = 54;
  1254.         cmSelectWindowNo    = 55;  cmRecordHistory     = 56;
  1255.  
  1256.       hcXXXX-Konstanten:
  1257.       ------------------
  1258.  
  1259.         hcNoContext = 0;  hcDragging  = 1;
  1260.  
  1261.       kbXXXX-Konstanten:
  1262.       ------------------
  1263.  
  1264.         kbEsc       = $011B;  kbAltSpace  = $0200;  kbCtrlIns   = $0400;
  1265.         kbShiftIns  = $0500;  kbCtrlDel   = $0600;  kbShiftDel  = $0700;
  1266.         kbBack      = $0E08;  kbCtrlBack  = $0E7F;  kbShiftTab  = $0F00;
  1267.         kbTab       = $0F09;  kbAltQ      = $1000;  kbAltW      = $1100;
  1268.         kbAltE      = $1200;  kbAltR      = $1300;  kbAltT      = $1400;
  1269.         kbAltY      = $1500;  kbAltU      = $1600;  kbAltI      = $1700;
  1270.         kbAltO      = $1800;  kbAltP      = $1900;  kbCtrlEnter = $1C0A;
  1271.         kbEnter     = $1C0D;  kbAltA      = $1E00;  kbAltS      = $1F00;
  1272.         kbAltD      = $2000;  kbAltF      = $2100;  kbAltG      = $2200;
  1273.         kbAltH      = $2300;  kbAltJ      = $2400;  kbAltK      = $2500;
  1274.         kbAltL      = $2600;  kbAltZ      = $2C00;  kbAltX      = $2D00;
  1275.         kbAltC      = $2E00;  kbAltV      = $2F00;  kbAltB      = $3000;
  1276.         kbAltN      = $3100;  kbAltM      = $3200;  kbF1        = $3B00;
  1277.         kbF2        = $3C00;  kbF3        = $3D00;  kbF4        = $3E00;
  1278.         kbF5        = $3F00;  kbF6        = $4000;  kbF7        = $4100;
  1279.         kbF8        = $4200;  kbF9        = $4300;  kbF10       = $4400;
  1280.         kbHome      = $4700;  kbUp        = $4800;  kbPgUp      = $4900;
  1281.         kbGrayMinus = $4A2D;  kbLeft      = $4B00;  kbRight     = $4D00;
  1282.         kbGrayPlus  = $4E2B;  kbEnd       = $4F00;  kbDown      = $5000;
  1283.         kbPgDn      = $5100;  kbIns       = $5200;  kbDel       = $5300;
  1284.         kbShiftF1   = $5400;  kbShiftF2   = $5500;  kbShiftF3   = $5600;
  1285.         kbShiftF4   = $5700;  kbShiftF5   = $5800;  kbShiftF6   = $5900;
  1286.  
  1287.  
  1288.       ------------------------------------------------------------------
  1289.                                     - 21 -
  1290.       
  1291.       ------------------------------------------------------------------
  1292.       - T V M C  -  Turbo Vision Menu Compiler V1.00                   -
  1293.       ------------------------------------------------------------------
  1294.  
  1295.         kbShiftF7   = $5A00;  kbShiftF8   = $5B00;  kbShiftF9   = $5C00;
  1296.         kbShiftF10  = $5D00;  kbCtrlF1    = $5E00;  kbCtrlF2    = $5F00;
  1297.         kbCtrlF3    = $6000;  kbCtrlF4    = $6100;  kbCtrlF5    = $6200;
  1298.         kbCtrlF6    = $6300;  kbCtrlF7    = $6400;  kbCtrlF8    = $6500;
  1299.         kbCtrlF9    = $6600;  kbCtrlF10   = $6700;  kbAltF1     = $6800;
  1300.         kbAltF2     = $6900;  kbAltF3     = $6A00;  kbAltF4     = $6B00;
  1301.         kbAltF5     = $6C00;  kbAltF6     = $6D00;  kbAltF7     = $6E00;
  1302.         kbAltF8     = $6F00;  kbAltF9     = $7000;  kbAltF10    = $7100;
  1303.         kbCtrlPrtSc = $7200;  kbCtrlLeft  = $7300;  kbCtrlRight = $7400;
  1304.         kbCtrlEnd   = $7500;  kbCtrlPgDn  = $7600;  kbCtrlHome  = $7700;
  1305.         kbAlt1      = $7800;  kbAlt2      = $7900;  kbAlt3      = $7A00;
  1306.         kbAlt4      = $7B00;  kbAlt5      = $7C00;  kbAlt6      = $7D00;
  1307.         kbAlt7      = $7E00;  kbAlt8      = $7F00;  kbAlt9      = $8000;
  1308.         kbAlt0      = $8100;  kbAltMinus  = $8200;  kbAltEqual  = $8300;
  1309.         kbCtrlPgUp  = $8400;  kbNoKey     = $0000;
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.       ------------------------------------------------------------------
  1352.                                     - 22 -
  1353.       
  1354.