home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / cobol / library / cwindow / hilfe.txt < prev    next >
Encoding:
Text File  |  1993-07-28  |  44.5 KB  |  1,246 lines

  1. ****************************************************************
  2. *                                                              *
  3. *                 C   -   W I N D O W                          *
  4. *                                                              *
  5. *                 Maskengenerator für                          *
  6. *                                                              *
  7. *         MS C, MS Quick C, Turbo C, Turbo C++                 *
  8. *                                                              *
  9. ****************************************************************
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                         Version    4.0
  16.  
  17.  
  18.                   (c) 1989-1992, Ebnet Software
  19.  
  20.  
  21.       D - 8000 München 70 , Passauerstrasse 2 b, Tel. 089/7698755
  22.  
  23.  
  24.  
  25. 1 Sharewarekonzept
  26. -------------------
  27.  
  28. Das Programm C-WINDOW ist urheberrechtlich geschützt. Zu 
  29. Prüfzwecken darf die vorliegende Programmversion jedoch frei 
  30. verwendet, kopiert und weitergegeben werden.
  31.  
  32. Bitte machen Sie Gebrauch davon und geben Sie das Programm an 
  33. Freunde, Bekannte etc. weiter.
  34.  
  35. Falls Sie nach Prüfung von C-WINDOW weiterhin damit arbeiten 
  36. möchten, bitte ich Sie sich als registrierter Anwender eintragen
  37. zu lassen. Für eine Registrierungsgebühr von DM 85.-- erhalten 
  38. Sie die folgenden Leistungen  
  39.  
  40.   - Nutzungsrecht für C-WINDOW
  41.   - Zusendung der Vollversion von C-WINDOW 
  42.     (mit allen Speichermodellen)
  43.   - Anwenderunterstützung 
  44.   - Updateservice für künftige Programmversionen zum Vorzugs-
  45.     preis von nur DM 45,-- 
  46.   - ein umfangreiches Benutzerhandbuch
  47.   - eine steuerlich abzugsfähige Rechnung
  48.  
  49. Nur durch Ihr faires Verhalten wird es möglich sein C-WINDOW
  50. nach Ihren Wünschen weiterzuentwickeln.
  51.  
  52. Es wird Ihnen die Möglichkeit gegeben, das Programm zu testen
  53. und auf seine Verwendungsmöglichkeit hin zu prüfen, bevor Sie 
  54. sich bei Gefallen als registrierter Anwender eintragen lassen. 
  55.  
  56. Das Registrierungsformular ist in der Datei REGIST.FOR enthalten
  57. und kann per DOS-Befehl PRINT ausgedruckt werden.
  58.  
  59. Die Prüfversion ist eine vollständige Programmversion und keine 
  60. Demoversion. C-WINDOW steht im vollen Funktionsumfang 
  61. zur Verfügung.
  62.  
  63. In der Ihnen vorliegenden Sharewareversion wird bei Ausgabe eines
  64. jeden Formates ein Copyrighthinweis ausgegeben.
  65.  
  66.  
  67. 2 Formatgenerator UniForm
  68. -------------------------
  69.  
  70. Für die interaktive Generierung der Bildschirmformate für den Einsatz
  71. mit C-WINDOW wird der universelle Formatgenerator UniForm V4.0
  72. mit ausgeliefert.
  73.  
  74. UniForm ist ein universelles Formatgenerierungssystem für den Einsatz in 
  75. allen gängigen Compilern. Das Gesamtpaket mit Treiberprogrammen für alle
  76. genannten Compiler erhalten Sie zum Preis von DM 169.--.
  77.  
  78. Die unten genannten Produkte sind Teilkomponenten von UniForm. 
  79. Jedes der Teilprodukte erhalten Sie zum Preis von DM 85.--.
  80.  
  81.   C-WINDOW           MS C, MS Quick C, Turbo C, Turbo C++
  82.  
  83.   BASIC-WINDOW       MS Basic, MS Quick Basic, Turbo Basic, Power Basic
  84.  
  85.   PASCAL-WINDOW      MS Pascal, MS Quick Pascal, Turbo Pascal
  86.  
  87.   COBOL-WINDOW       MS Cobol, MF VS Cobol, MF Professinal Cobol,
  88.                      MF Cobol/2
  89.  
  90.   ASSEMBLER-WINDOW   MS Assembler, MS Quick Assembler, Turbo Assembler
  91.  
  92.   FORTRAN-WINDOW     MS Fortran
  93.  
  94.   CLIPPER-WINDOW     Clipper V5.01
  95.  
  96. Im folgenden werden nur die Komponenten von C-WINDOW beschreiben.
  97.  
  98.  
  99.  
  100. Inhaltsverzeichnis
  101.  
  102. 1       Warum UniForm
  103. 2       Und so wirds gemacht
  104. 3       Ein einfaches Beispiel
  105. 4       Inbetriebnahme
  106. 4.1     Systemanforderungen
  107. 4.2     Disketteninhalt
  108. 4.3     Installation
  109. 5       Formatgenerierung (nur in Vollversion)
  110. 6       Formataufruf
  111. 6.1     Ablaufschema
  112. 6.1.1   Programmsource
  113. 6.1.1.1 Bereitstellen Standard-Include-Datei
  114. 6.1.1.2 Bereitstellen Include-Datei für variable Felder
  115. 6.1.1.3 Maussteuerung
  116. 6.1.1.4 Bereitstellen Include-Datei für Formatlayout
  117. 6.1.1.5 Versorgen Übergabeparameter
  118. 6.1.1.6 Aufruf Treiberprogramm UNIF
  119. 6.1.1.7 Auswerten Returnfeld
  120. 6.1.2   Compilieren/ Linken
  121. 6.1.3   Programmausführung
  122. 6.1.4   Schattenfunktion
  123. 6.1.5   Dynamische Attributmodifikation
  124. 6.2     Ablauf Compilerspezifisch
  125. 6.2.1   Ablauf in MS C/ MS Quick C
  126. 6.2.2   Ablauf in Turbo C/ Turbo C++
  127. 7       Ablauf im Beispiel
  128. 8       Beispiel für "dynamische Attributmodifikation"
  129. 9       Beispiel für "Menüauswahl"
  130. A1      Cursorsteuerung
  131.  
  132.  
  133. 1 Warum UniForm
  134.  
  135. Komfortabele Benutzeroberflächen sind heutzutage schlichtweg zum
  136. MUSS geworden.  Doch die  Programmierung von Masken, Menüs, Fen-
  137. stern und dergleichen ist relativ kompliziert und zeitaufwendig.
  138. Zudem  sollten   solche  zeitkritischen  Routinen  in schnellem 
  139. Assemblercoding  realisiert   werden.  Kurzum   - viele  Gründe 
  140. sprechen dafür geignete Hilfsmittel zu verwenden.
  141.  
  142. Die  Softwareindustrie   bietet  für   jeden  Compiler  dutzende
  143. sogenannter Toolboxen  an. Der  Programmierer  hat  es  bei  der
  144. Auswahl schwer.  Das letztendlich  gewählte Produkt  stellt sich
  145. nicht selten  als schwierig in der Handhabung heraus oder bietet
  146. nicht den Funktionsumfang, der für eine schnelle und komfortable
  147. Formatintegration in  sein Programm  unabdingbar ist.  In  jedem
  148. Fall aber ist die Anwendung auf eine Programmiersprache, oft gar
  149. auf einen bestimmten Compiler begrenzt.
  150.  
  151. UniForm als  universelles  Formatierungssystem  macht  endgültig
  152. Schluß mit  diesem Dilemna.  Das System  ist sehr leistungsfähig
  153. aber dennoch praktisch ohne Einarbeitung bedienbar.
  154.  
  155. UniForm generiert  für jedes  generierte Format  automatisch ein
  156. einfaches Sourcebeispiel  für den  Einsatz in der augenblicklich
  157. gewählten Programmiersprache. Selbst Programmierneulinge erreichen 
  158. somit  innerhalb weniger  Minuten erste beeindruckende Ergebnisse!
  159.  
  160. Durch   seine    universelle   Programmschnittstelle   ist   der
  161. Formateinsatz in  allen gängigen Compilern  realisiert. Das sind
  162. im einzelnen...
  163.  
  164.    - Microsoft C              - Microsoft Pascal
  165.    - Microsoft Quick C        - Microsoft Quick Pascal
  166.    - Turbo C                  - Turbo Pascal
  167.    - Turbo C++                - Microsoft Assembler
  168.    - Microsoft Basic          - Microsoft Quick Assembler
  169.    - Microsoft Quick Basic    - Turbo Assembler
  170.    - Turbo Basic              - Microsoft Cobol
  171.    - Power Basic              - VS Cobol
  172.    - Microsoft Fortran        - Cobol/2
  173.    - Clipper                  - Professional Cobol
  174.  
  175. Bei einem  eventuellen Umstieg  auf einen  anderen Compiler oder
  176. gar auf  eine andere  Programmiersprache sind vorhandene Formate
  177. sofort wieder verfügbar.
  178.  
  179. UniForm   bietet    eine    vollständige    Lösung    von    der
  180. Formatgenerierung  bis   zum  Formateinsatz  und  zeichnet  sich
  181. darüberhinaus durch  ein breites  Funktionsspektrum  aus,  deren
  182. wesentliche Aspekte   an dieser Stelle in einer kurzen Übersicht
  183. einen ersten  Eindruck über  die  Leistungsfähigkeit  vermitteln
  184. soll.
  185.  
  186.   Formatgenerierung
  187.  
  188.    - Interaktive maskengesteuerte Formatgenerierung
  189.    - Mausunterstützung bei der Formaterstellung
  190.    - Umfangreiche Editierfunktionen
  191.    - Alphanumerische-, Ganzzahl- und Dezimalfelder
  192.    - Ein-und Ausgabefelder (nur dem Programm zugänglich)
  193.    - Menüfelder(als"Menu-Items" in Funktions-Auswahlmenüs)
  194.    - Frei wählbare Feld-, Text-, Schatten- und Rahmenattribute
  195.    - Umfangreiche Formatverwaltungsfunktionen
  196.    - Integriertes Hilfesystem
  197.  
  198.   Formataufruf im Programm
  199.  
  200.    - Formataufruf mit nur einem Funktionsaufruf
  201.    - Formateinsatz in allen gängigen Programmiersprachen
  202.    - Automatische Generierung eines Sourcebeispieles
  203.    - Fenstertechnik, Menüs, Popups, Pulldowns ...
  204.    - Dynamische Attribute für Felder, Text, Rahmen und Schatten
  205.    - Mausunterstützung im Programm
  206.    - Funktionsauswahl über Maus, Funktionstasten und Buchstaben
  207.    - Unterstützung aller gängigen Grafikkarten
  208.  
  209.  
  210. 2 Und So wirds gemacht
  211.  
  212. Das Konzept  von UniForm ist in zwei Verarbeitungsschrittenreali-
  213. siert. Im ersten Schritt erstellen Sie Ihre Formate interaktiv
  214. mit dem  UniForm-Formatgenerator. Im  zweiten Verarbeitungsschritt
  215. bringen Sie  die automatisch  generierten INCLUDE-Dateien  für
  216. das Formatlayout und  die variablen Felder in Ihren Sourcecode ein
  217. und binden  das   Programm  zusammen   mit  dem   entsprechenden
  218. (vom eingesetzten Compiler abhängig) UniForm-Treibermodul.
  219.  
  220.  
  221. 2.1  Formate generieren
  222.  
  223. Optionen einstellen
  224.   - Compiler, mit dem Sie arbeiten möchten
  225.   - Verzeichnis, in dem UniForm alle Dateien ablegen soll
  226.   - Feldkennzeichen für die Definition variabler Felder
  227.   - Standardattribute für variable Felder, Text und  Rahmen
  228.   - Formatkennzeichen einstellen
  229.   - Formatname
  230.   - Formatdimension
  231.  
  232. Formatlayout editieren
  233.   - fester Text im Format
  234.   - wahlweise einen einfachen oder dicken Rahmen
  235.   - wahlweise variable Eingabefelder oder Ausgabefelder
  236.  
  237. Format- und Feldattribute und Feldnamen modifizieren
  238.   - wahlweise verändern der Standardfeldnamen für variable Felder
  239.   - wahlweise verändern der Feldfarben
  240.   - wahlweise verändern der Text- und/oder Rahmenfarbe
  241.  
  242.  
  243. 2.2  Programme mit Formaten erstellen
  244.  
  245. Anpassen Programmsource
  246.   - mit Standard-Include Datei für Ihren Compiler
  247.   - mit Include-Datei für variable Felder (von UniFormgeneriert)
  248.   - mit Include-Datei für das Formatlayout (von UniFormgeneriert)
  249.   - mit UniForm-Funktionsaufruf mit entsprechender
  250.     Parameterübergabe
  251.  
  252. Programmegenerierung
  253.   - übersetzen Sourcecode wie gehabt
  254.   - Linken mit dem entsprechenden UniForm-Treibermodul
  255.  
  256.  
  257. 3 Ein einfaches Beispiel
  258.  
  259. Frau Mary  Mustermann bekommt  den Auftrag eintreffende Waren in
  260. einer kleinen  Datenbank zu verwalten. Frau Mustermann verwendet
  261. UniForm für die Generierung und Einbindung einer Eingabemaske in
  262. Ihr Projekt,  das Sie  mit dem  Quick C  Compiler von  Microsoft
  263. realisieren will.
  264.  
  265. Formatgenerierung
  266.  
  267. Als erstes definiert Sie im Menü <Optionen> die gewünschte
  268. Voreinstellung...
  269.   - Compiler                              Microsoft Quick C
  270.   - Verzeichnis                           C:\muster
  271.   - Feldkennzeichen
  272.         für Eingabefeld alphanumerisch    !
  273.         für Eingabefeld numerisch         "
  274.   - Standardattribute
  275.         für Eingabefeld alphanumerisch    Hellweiss auf Schwarz
  276.         für Eingabefeld numerisch         Hellweiss auf Schwarz
  277.         für Text                          Schwarz auf Weiss
  278.         für Rahmen                        Schwarz auf Weiss
  279.  
  280. Als nächstes wählt Sie im Menü <Bearbeiten> die Funktion <Format
  281. neu> und  definiert in  den Folgemasken  den  Formatnamen mit
  282. "order" und die Formatgröße mit Zeile 3 - 18 und Spalte 5 - 70.
  283. Frau Mustermann  sieht sich einem leeren Format in den gewählten
  284. Attributeinstellungen  für   Text  und   Rahmen  gegenüber.  Sie
  285. editiert das  Formatlayout  durch  Tastatureingabe,  den  Cursor
  286. positioniert Sie  über die  Maus oder die entsprechenden Cursor-
  287. Richtungstasten.  Funktionen   wie  Linien   ziehen,   Rechtecke
  288. zeichnen, Zeilen  bzw. Spalten löschen oder den Rahmen wahlweise
  289. ein-  oder   auszuschalten  beschleunigen  die  Formaterstellung
  290. erheblich. Die  variablen Felder definiert Sie durch Eingabe der
  291. festgelegten Feldkennzeichen  in der  gewünschten Feldlänge oder
  292. alternativ durch  Die Funktion  <Felddefinition> (F5).  Die Edi-
  293. tierfunktionen blendet Sie im Bedarfsfall mit F9 ein um sich mit
  294. den wichtigsten Editierfunktionen vertraut zu machen.
  295.  
  296. Frau Mustermann  sichert Ihr  Format duch  Eingabe von  <F1>. Im
  297. Verarbeitungsschritt  <Feldnamen/   Attribute>  modifiziert  Sie
  298. schließlich die  von UniForm  automatisch  vergebenen  Standard-
  299. Feldnamen (fld0  bis  fld5)  in  "product",  "orderdate",  "nr",
  300. "quantity" und  "price. Von  der Möglichkeit die Farben für Ihre
  301. Felder oder für Text und Rahmen zu modifizieren macht Sie keinen
  302. Gebrauch. Sie sichert das Format mit <F1>.
  303.  
  304. Der Formatgenerator zeigt im Format <Generierung> die erstellten
  305. Dateien an,  die im  eingestellten Verzeichnis abgelegtwerden.und
  306. im Menü <Ansicht> angezeigt werden können...
  307.  
  308.   - order.bld       enthält Formatdatei für Formatgenerator
  309.   - order.h         enthält die variablen Felder
  310.   - order.i         enthält das Formatlayout
  311.   - order.smp       enthält ein Sourcebeispiel
  312.   - order.att       enthält Informationen über Attribute
  313.  
  314. Programmgenerierung
  315.  
  316. Frau Mustermann  ergänzt das  von UniForm automatisch generierte
  317. Sourcebeispiel  um   einige   wenige   Programmanweisungen   und
  318. Kommentare, und schon steht ihr erstes Programm mit UniForm kurz 
  319. vor der Vollendung.
  320.  
  321. Der Sourcecode sieht letztlich wie folgt aus.
  322.  
  323.   #include "_UFC01.H"        Std-Include-File für Quick C
  324.   #include "ORDER.H"         Include-File für variable Felder
  325.   main {
  326.   FKZ= 2;                    Funktionskennzeichen Format ausgeben
  327.   SM=0;                      Schreibmarkenposition 0
  328.   RET= 8;                    Schattenattribut versorgen
  329.   memcpy(FMT"order    ",8)   Formatname versorgen
  330.   #include "ORDER.I"         Include-File für Formatlayout
  331.   WHILE(RET!=110)            Programmende bei F10
  332.   {                          UniForm-Unterprogrammaufruf
  333.     UNIF(FKZ&,FMT$,order.product,RET&,SM&,Daten);
  334.     FKZ% = 3                 Nur Felder neu ausgeben
  335.     CALL DB-VERARBEITUNG
  336.   } }
  337.  
  338. Für das  Compilieren stellt  Sie die  Include-Dateien  _UFC01.H,
  339. ORDER.H und  ORDER.I bereit. Schließlich bindet Sie das Programm
  340. mit den  UniForm-Treibermodul für  MS-Quick  C  (ufc01s.obj  für
  341. Model SMALL).
  342.  
  343. Frau Mustermann ruft das generierte Programm "ORDER.EXE" auf und
  344. schon sieht  sie sich  dem Format <order> gegenüber - bereit zur
  345. Eingabe von Daten.
  346.  
  347.  
  348. 4 Inbetriebnahme
  349.  
  350. 4.1 Systemanforderungen
  351.  
  352. Für den  Einsatz von  UniForm wird folgende Minimalkonfiguration
  353. vorausgesetzt
  354.  
  355.  - IBM Personal Computer oder 100 % kompatibel
  356.  - 1 Diskettenlaufwerk/ Festplatte empfohlen
  357.  - PC-DOS, MS-DOS Version 2.1 und höher oder DR-DOS
  358.  - VGA-, EGA-, MDA- oder Hercules-Grafikkarte
  359.  - wahlweise eine Microsoft-kompatible Maus
  360.  
  361.  
  362. 4.2 Disketteninhalt
  363.  
  364. Komponenten für Formatgenerator
  365.   UNIFORM.EXE Formatgenerierungsprogramm
  366.   UNIFORM.CFG Konfigurationsdatei
  367.   UNIFORM.HLP Hilfedatei
  368.  
  369. Komponenten für MS C, MS Quick C
  370.   UFC01S.OBJ  Treibermodul - model small
  371.   UFC01M.OBJ  Treibermodul - model medium (nur Vollversion)
  372.   UFC01C.OBJ  Treibermodul - model compact (nur Vollversion)
  373.   UFC01L.OBJ  Treibermodul - model large (nur Vollversion)
  374.   _UFC01.H    Standard Include Datei
  375.   UFC012.C    Sourcebeispiel "menu"
  376.   UFC013.C    Sourcebeispiel "order"
  377.   UFC014.C    Sourcebeispiel "easy"
  378.   UFC015.C    Sourcebeispiel "dynamic"
  379.  
  380. Komponenten für Turbo C, Turbo C++
  381.   UFC02S.OBJ  Treibermodul - model small
  382.   UFC02M.OBJ  Treibermodul - model medium (nur Vollversion)
  383.   UFC02C.OBJ  Treibermodul - model compact (nur Vollversion)
  384.   UFC02L.OBJ  Treibermodul - model large (nur Vollversion)
  385.   _UFC02.H    Standard Include Datei
  386.   UFC022.C    Sourcebeispiel "menu"
  387.   UFC023.C    Sourcebeispiel "order"
  388.   UFC024.C    Sourcebeispiel "easy"
  389.   UFC025.C    Sourcebeispiel "dynamic"
  390.  
  391. Formatdateien für Sourcebeispiele
  392.   MENU01.BLD  Formatdatei "menu01"
  393.   MENU02.BLD  Formatdatei "menu02"
  394.   MENU03.BLD  Formatdatei "menu03"
  395.   ORDER.BLD   Formatdatei "order"
  396.   MESSAGE.BLD Formatdatei "message"
  397.   TESTFMT.BLD Formatdatei "testfmt"
  398.  
  399. Dokumentation
  400.   HILFE.TXT   Dokumentation
  401.   REGIST.FOR  Registrierungsformualar
  402.  
  403.  
  404. 4.3 Installation
  405.  
  406. Der UniForm Formatgenerator ist auf einem beliebigen Verzeichnis
  407. auf Festplatte oder Diskettenlaufwerk ablauffähig. Wir empfehlen
  408. die Einrichtung  des  Verzeichnisses  <UNIFORM>  (MD \UNIFORM).
  409. Kopieren   Sie   die   Dateien   UNIFORM.EXE   und UNIFORM.CFG
  410. (Konfigurationsdatei) in das Verzeichnis Ihrer Wahl. Die Hilfedatei  
  411. UNIFORM.HLP wird  im Aufrufverzeichnis  oder  im Hauptverzeichnis 
  412. des aktuellen Laufwerkes erwartet.
  413.  
  414. Die Treibermodule  und die Standard-Include Dateien kopieren Sie
  415. in Ihre Compilerverzeichnisse.
  416.  
  417.  
  418. 5 Formatgenerierung
  419.  
  420. Die Formatgenerierung mit all seinen Formaten und den Funktionen
  421. zu den Formaten ist im Handbuch der Vollversion ausführlich be-
  422. schrieben.
  423.  
  424. An dieser Stelle nur ein Tip. Rechtecke (beim Erstellen des For-
  425. matlayouts) zeichnen Sie wie folgt:
  426.  
  427.   definieren 1. Koordinate mit ALT-Y
  428.   definieren 2. Koordinate mit ALT-Z
  429.  
  430. Das Rechteck wird mit dem aktuell eingestellten Linienzeichen
  431. dargestellt.
  432.  
  433.  
  434. 6 Formataufruf
  435.  
  436. Der Aufruf  eines  mit  dem  UniForm  Formatgenerator  erzeugten
  437. Formates wird  durch Aufruf  nur einer  einzigen Funktion (UNIF)
  438. realisiert.  Das  Treibermodul  ist  für  die  unterschiedlichen
  439. Compiler in unterschiedlicher Ausprägung vorhanden und übernimmt
  440. sämtliche bei  einer Formatverarbeitung anfallenden Aufgaben wie
  441. Ausgabeformatierung,     Bildschirmausgabe,     Cursorsteuerung,
  442. Maussteuerung,  Eingabeformatierung   und  liefert   Ihnen   den
  443. Returncode der  gedrückten Funktionstaste oder Tastenkombination
  444. am Ende  der Verarbeitung.  Die Treibermodule  sind im schnellem
  445. Assemblercode geschrieben  und zeichnen  sich  demzufolge  durch
  446. eine extrem kurze Laufzeit aus.
  447.  
  448. Alle Dateien  die für  den Ablauf  erforderlich sind, werden von
  449. UniForm bei  der  Formatgenerierung  automatisch  zur Verfügung
  450. gestellt. Sie  sind  als  INCLUDE-  bzw.  COPY-Elemente  in  der
  451. Programmsource bereitzustellen
  452.  
  453.  
  454. 6.1 Ablaufschema
  455.  
  456. Für den  Aufruf eines  mit UniForm  generierten Formates stellen
  457. Sie in  Ihrer  Programmsource  die  von  UniForm  zur  Verfügung
  458. gestellten     Include-Dateien     bereit,     versorgen     die
  459. Übergabeparameter und  rufen das  entsprechende  Treiberprogramm
  460. UNIF auf. Anschließend compilieren Sie wie gehabt und Linken Ihr
  461. Programm mit dem entsprechenden UniForm Treibermodul zusammen.
  462.  
  463.  
  464. 6.1.1 Programmsource
  465.  
  466.   -  Bereitstellen Standard-Include-Datei
  467.   -  Bereitstellen Include-Datei für variable Felder
  468.   -  Bereitstellen Include-Datei für Formatlayout
  469.   -  Aufruf Maussteuerung
  470.   -  Versorgen Übergabeparameter
  471.   -  Aufruf Treiberprogramm UNIF
  472.   -  Auswerten Returncode
  473.  
  474.  
  475. 6.1.1.1 Bereitstellen Standard-Include-Datei
  476.  
  477. Die Standard Include Datei ist je Compiler vorhanden und enthält
  478. Felddefinitionen für die Übergabeparameter des Treiberprogrammes
  479. sowie    -    im    Bedarfsfall    -    die    Definition    des
  480. Maschinenspracheunterprogrammes UNIF selbst.
  481.  
  482. Die    Standard-Include-Dateien    finden    Sie    auf    Ihren
  483. Produktdisketten. Detailinformationen  entnehmen Sie bitte
  484. Punkt 6.2.
  485.  
  486.  
  487. 6.1.1.2 Bereitstellen Include-Datei für variable Felder
  488.  
  489. Die Include-Datei  für variable Felder beinhaltet die Definition
  490. der variablen  Felder für  ein Format  im Dialekt  des gewählten
  491. Compilers.   Die    Include-Datei    wird    Ihnen    bei    der
  492. Formatgenerierung mit  dem UniForm  Formatgenerator  automatisch
  493. zur Verfügung  gestellt. Detailinformationen entnehmen Sie bitte
  494. Punkt 6.2.
  495.  
  496.  
  497. 6.1.1.3 Aufruf Maussteuerung
  498.  
  499. Wenn Sie  Ihre Formate  mit Mausunterstützung zum Ablauf bringen
  500. wollen, muß  am Programmanfang  die Maus  initialisiert  und  am
  501. Programmende  die   Maus  wieder   ausgeschaltet  werden.  Diese
  502. Funktionen werden jeweils durch einen einmaligen Funktionsaufruf
  503. realisiert.  Der   Aufruf  ist  compilerspezifisch  und  in  6.2
  504. beschrieben.
  505.  
  506.  
  507. 6.1.1.4 Bereitstellen Include-Datei für Formatlayout
  508.  
  509. Die Include-Datei für das Formatlayout beinhaltet die Definition
  510. des Formatlayouts für ein Format im Dialekt des gewählten Compi-
  511. lers. Die  Layoutdatei wird  Ihnen bei der Formatgenerierung mit
  512. dem UniForm  Formatgenerator automatisch zur Verfügung gestellt.
  513. Detailinformationen entnehmen Sie bitte Punkt 6.2.
  514.  
  515.  
  516. 6.1.1.5 Versorgen Übergabeparameter
  517.  
  518. Der  Aufruf  des  Treiberprogrammes  UNIF  setzt  die  sinnvolle
  519. Versorgung der  Übergabeparameter  voraus.  Die  Definition  der
  520. Übergabeparameter erfolgt in den o. g. Standard-Include-Dateien.
  521. In der  hier angegebenen  Reihenfolge sind im jeweiligen Dialekt
  522. des gewählten Compilers die folgenden Parameter zu übergeben.
  523.  
  524.   Funktionskennzeichen FKZ
  525.   Formatname           FMT
  526.   Feldname             1. variables Feld
  527.   Returnfeld           RET
  528.   Schreibmarke         SM
  529.   Formatlayout         Daten
  530.  
  531. Funktionskennzeichen FKZ
  532.  
  533. Über  das   Funktionskennzeichen  FKZ   wird  die  auszuführende
  534. Funktion an  das Treiberprogramm  UNIF übergeben.  Das Feld  FKZ
  535. wird in  der Standard-Include-Datei  als 2 Byte langes Binärfeld
  536. zur Verfügung  gestellt. In  Clipper wird  FKZ als 1 Byte langes
  537. Characterfeld bereitgestellt.
  538.  
  539. Folgende Funktionen stehen zur Verfügung.
  540.  
  541.       0  + Sichern aktuellen Bildschirminhalt
  542.          + Rückkehr zum aufrufenden Programm
  543.  
  544.       1  + Löschen Bildschirm
  545.          + Ausgeben Formatlayout
  546.          + Ausgeben variable Felder mit den aktuellen
  547.            Feldinhalten
  548.          + Warten auf Tastatureingabe(n)
  549.          + Rückkehr zum aufrufenden Programm nach ENTER/ ESC/
  550.            Funktionstaste
  551.  
  552.       2  + Ausgeben Formatlayout
  553.          + Ausgeben variable Felder mit den aktuellen
  554.            Feldinhalten
  555.          + Warten auf Tastatureingabe(n)
  556.          + Rückkehr zum aufrufenden Programm nach ENTER/ ESC/
  557.            Funktionstaste
  558.  
  559.       3  + Ausgeben variable Felder mit den aktuellen
  560.            Feldinhalten
  561.          + Warten auf Tastatureingabe(n)
  562.          + Rückkehr zum aufrufenden Programm nach ENTER/ ESC/
  563.            Funktionstaste
  564.  
  565.       4  + Ausgeben Formatlayout eines leeren Formates
  566.          + Warten auf Tastatureingabe(n)
  567.          + Rückkehr zum aufrufenden Programm nach ENTER/ ESC/
  568.            Funktionstaste
  569.  
  570.       5  + Ausgeben gesicherten Bildschirminhalt
  571.  
  572.       6  + Ausgeben Formatlayout
  573.          + Ausgeben variable Felder mit den aktuellen
  574.            Feldinhalten
  575.          + Rückkehr zum aufrufenden Programm
  576.  
  577.       7  + Ausgeben variable Felder mit den aktuellen
  578.            Feldinhalten
  579.          + Rückkehr zum aufrufenden Programm    
  580.  
  581.     20*) + Dynamisches Ändern Feldattribut
  582.          + Rückkehr zum aufrufenden Programm
  583.  
  584.     21*) + Dynamisches Ändern Textattribut
  585.          + Rückkehr zum aufrufenden Programm
  586.  
  587.     22*) + Dynamisches Ändern Rahmenattribut
  588.          + Rückkehr zum aufrufenden Programm
  589.  
  590. Bei  der   dynamischen   Änderung   von   Text-,   Rahmen-   und
  591. Feldattributen (Funktionen  20 bis 22) wird das neue Attribut im
  592. Parameter RET  übergeben. Das  zu modifizierende  variable  Feld
  593. wird im  Übergabeparameter SM als fortlaufende Nummer (beginnend
  594. mit 0) übergeben.
  595.  
  596.     Beispiel (Attributeinstellung "Rot auf Weiss" für 5.
  597.     variables Feld)
  598.  
  599.       FKZ = 20     FKZ für dynamisches Ändern Feldattribut
  600.       SM = 4       5. variables Feld
  601.       RET = 244    Code für Attributeinstellung "Rot auf Weiss"
  602.  
  603.     Beispiel (Attributeinstellung "Schwarz auf Grün" für
  604.     Textbereich)
  605.  
  606.       FKZ = 21     FKZ für dynamisches Ändern Textattribut
  607.       RET = 32     Code für Attributeinstellung "Schwarz auf Grün"
  608.  
  609.     Beispiel (Attributeinstellung "Blau auf Rot" für
  610.     Rahmenbereich)
  611.  
  612.       FKZ = 22     FKZ für dynamisches Ändern Rahmenattribut
  613.       RET = 65     Code für Attributeinstellung "Blau auf Rot"
  614.  
  615. *) Eine weitere Möglichkeit der dynamischen Attributmodifikation
  616. ist im Kapitel 6.1.5 beschrieben.
  617.  
  618. Formatname FMT
  619.  
  620. Im  Übergabeparameter   FMT   wird   der   Formatname   an   das
  621. Treiberprogramm  UNIF  übergeben.  Das  Feld  FMT  wird  in  der
  622. Standard-Include-Datei  als  8  Byte  langes  Characterfeld  zur
  623. Verfügung gestellt.  Der Formatname  ist ggf.  rechtsbündig  mit
  624. Leerzeichen aufzufüllen.  Unterscheidungen  zwischen  Groß-  und
  625. Kleinbuchstaben werden nicht gemacht.
  626.  
  627. Feldname des ersten variablen Feldes
  628.  
  629. In diesem  Übergabeparameter ist  das erste  variable Feld  bzw.
  630. dessen Adresse an das Treiberprogramm UNIF zu übergeben. Bei den
  631. Funktion 0, 4 und 5 ist der Übergabeparameter irrelevant und mit
  632. FMT  zu   versorgen.  Etwaige  compilerspezifische  Abweichungen
  633. entnehmen Sie bitte aus Punkt 6.2 ff.
  634.  
  635. Returnfeld RET
  636.  
  637. Im  Übergabeparameter  RET  wird  der  Tastenreturncode  an  das
  638. aufrufende Programm von UNIF zurückgegeben. Das Feld RET wird in
  639. der Standard-Include-Datei  als  2  Byte  langes  Binärfeld  zur
  640. Verfügung gestellt.  In Clipper  wird FKZ als 1 Byte langes Cha-
  641. racterfeld bereitgestellt.
  642. Der Parameter RET dient auch zur Übergabe des
  643. Schattenattributes(siehe 6.1.4).
  644.  
  645. Der Parameter  wird weiterhin bei den Funktionen der dynamischen
  646. Attributmodifikation  für  Text,  Rahmen  oder  variable  Felder
  647. (Funktionen  20  bis  22)  als  Übergabeparameter  für  den
  648. neueinzustellenden Attributcode verwendet.
  649.  
  650. Schreibmarke SM
  651.  
  652. Im Übergabeparameter  SM wird  die Schreibmarkenposition  an das
  653. Treiberprogramm UNIF  als fortlaufende  Nummer (beginnend mit 0)
  654. übergeben. Nur zugängliche Felder (Eingabefleder und Menüfelder)
  655. sind  dabei   zu   berücksichtigen.   Die   Positionierung   der
  656. Schreibmarke auf Ausgabefelder ist nicht möglich.
  657.  
  658. Weiterhin wird  nach Rückkehr  vom Treiberprogramm  die aktuelle
  659. Schreibmarkenposition zurückgegeben.
  660.  
  661. Das Feld SM wird in der Standard-Include-Datei als 2 Byte langes
  662. Binärfeld zur  Verfügung gestellt. In Clipper wird SM als 1 Byte
  663. langes Characterfeld bereitgestellt.
  664.  
  665.     Beispiel (Schreibmarke auf 1. zugängliches Feld)
  666.  
  667.       SM = 0
  668.  
  669.     Beispiel (Schreibmarke auf 5. zugängliches Feld)
  670.  
  671.       SM = 4
  672.  
  673. Der  Parameter   wird  darüberhinaus   bei  der   Funktion   der
  674. dynamischen Attributmodifikation  für variable  Felder (Funktion
  675. 22) als Übergabeparameter (fortlaufende Nummer, beginnend mit 0)
  676. für  das  zu  bearbeitende  Feld  verwendet.  Im  Gegensatz  zur
  677. Schreibmarkenpositionierung   sind    hier   Ausgabefelder    zu
  678. berücksichtigen.
  679.  
  680. Formatlayout Daten
  681.  
  682. Im  Übergabeparameter   Daten  wird   das  Formatlayout  an  das
  683. Unterprogramm UNIF  übergeben. UniForm stellt für die Versorgung
  684. des Bereiches  ein entsprechendes INCLUDE- bzw. COPY-Element zur
  685. Verfügung. Das Feld Daten wird in der Standard-Include-Datei als 
  686. 3 Kilobyte langes Characterfeld zur Verfügung gestellt.
  687.  
  688.  
  689. 6.1.1.6 Aufruf Treiberprogramm UNIF
  690.  
  691. Der Unterprogrammaufruf   ist nach erfolgter Parameterversorgung
  692. in Notation des gewählten Compilers vorzunehmen.
  693.  
  694. Detailinformationen entnehmen Sie bitte Punkt 6.2.
  695.  
  696.  
  697. 6.1.1.7 Auswerten Returnfeld
  698.  
  699. Im  Übergabeparameter  RET  wird  nach  jedem  Formataufruf der
  700. Tastenreturncode hinterlegt.  D. h. nach Betätigung einer der u.
  701. g. Tasten(kombinationen)  erhalten Sie  die Steuerung  in Ihrem
  702. Programm zurück.
  703.  
  704. - Tastenretuncodes
  705.  
  706.   ESC      99         |           ENTER  100
  707.                       |
  708.   F1       101        |           SH - F1     111
  709.   F2       102        |           SH - F2     112
  710.   F3       103        |           SH - F3     113
  711.   F4       104        |           SH - F4     114
  712.   F5       105        |           SH - F5     115
  713.   F6       106        |           SH - F6     116
  714.   F7       107        |           SH - F7     117
  715.   F8       108        |           SH - F8     118
  716.   F9       109        |           SH - F9     119
  717.   F10      110        |           SH - F10    120
  718.                       |
  719.   ^ - F1   121        |           ALT - F1    131
  720.   ^ - F2   122        |           ALT - F2    132
  721.   ^ - F3   123        |           ALT - F3    133
  722.   ^ - F4   124        |           ALT - F4    134
  723.   ^ - F5   125        |           ALT - F5    135
  724.   ^ - F6   126        |           ALT - F6    136
  725.   ^ - F7   127        |           ALT - F7    137
  726.   ^ - F8   128        |           ALT - F8    138
  727.   ^ - F9   129        |           ALT - F9    139
  728.   ^ - F10  130        |           ALT - F10   140
  729.                       |
  730.   ALT - 1  141        |           ALT - 6     146
  731.   ALT - 2  142        |           ALT - 7     147
  732.   ALT - 3  143        |           ALT - 8     148
  733.   ALT - 4  144        |           ALT - 9     149
  734.   ALT - 5  145        |           ALT - 10    150
  735.                       |
  736.   ALT - A  151        |           ^ - A       177
  737.   ALT - B  152        |           ^ - B       178
  738.   ALT - C  153        |           ^ - C       179
  739.   ALT - D  154        |           ^ - D       180
  740.   ALT - E  155        |           ^ - E       181
  741.   ALT - F  156        |           ^ - F       182
  742.   ALT - G  157        |           ^ - G       183
  743.   ALT - H  158        |           ^ - H       184
  744.   ALT - I  159        |           ^ - I       185
  745.   ALT - J  160        |           ^ - J       186
  746.   ALT - K  161        |           ^ - K       187
  747.   ALT - L  162        |           ^ - L       188
  748.   ALT - M  163        |           ^ - M       189
  749.   ALT - N  164        |           ^ - N       190
  750.   ALT - O  165        |           ^ - O       191
  751.  
  752.   ALT - P  166        |           ^ - P       192
  753.   ALT - Q  167        |           ^ - Q       193
  754.   ALT - R  168        |           ^ - R       194
  755.   ALT - S  169        |           ^ - S       195
  756.   ALT - T  170        |           ^ - T       196
  757.   ALT - U  171        |           ^ - U       197
  758.   ALT - V  172        |           ^ - V       198
  759.   ALT - W  173        |           ^ - W       199
  760.   ALT - X  174        |
  761.   ALT - Y  175        |
  762.   ALT - Z  176        |
  763.  
  764. Bei Tastenreturncode  99 (ESC)  werden eventuelle Modifikationen
  765. variabler Felder verworfen.
  766.  
  767. Für die  Realisierung sog.  Balkenmenüs über Menüfelder beachten
  768. Sie bitte  folgendes. Bei  Betätigung der Tasten ENTER von einem
  769. Menüfeld aus  (Cursor zeigt  auf Menüfeld)  wird der  Returncode
  770. n+200 zurückgegeben  (n =  Nummer  des  ungeschützten  variablen
  771. Feldes (Eingabefelder  und  markierbare  Felder)  innerhalb  des
  772. aktuellen  Formates).   Bei  der  Betätigung  einer  der  o.  g.
  773. Tasten(Kombinationen)  auf  einem  markierbaren  Feld  wird  der
  774. Tastenreturncode  der  Funktionstaste  zurückgemeldet.  Bei  der
  775. Eingabe von ESC wird 99 zurückgemeldet.
  776.  
  777.  
  778. 6.1.2 Compilieren/ Linken
  779.  
  780. Für das  Compilieren  Ihres  Programmes  stellen  Sie  die  Std-
  781. Include-Datei, die  Include-Dateien für die variablen Felder und
  782. das Formatlayout  bereit. Das  entsprechende Treibermodul ist in
  783. das  Programm   einzubinden.  Detaillierte   Informationen  über
  784. Compiler- und  Linkvorschriften entnehmen  Sie bitte  aus  Ihren
  785. Programmierhandbüchern.
  786.  
  787.  
  788. 6.1.3 Programmausführung
  789.  
  790. Für die Ausführung Ihrer Programme sind neben der eigentlichen
  791. EXE-Datei keine weiteren Komponenten erforderlich.
  792.  
  793.  
  794. 6.1.4 Schattenfunktion
  795.  
  796. Neben der  Rückgabe der  Tastenreturncodes  wird  das  Feld  RET
  797. benutzt um  das Schattenattribut  für die  Ausgabe von
  798. Formatenmit Schatten zu übergeben.
  799.  
  800. Beachten Sie bitte die folgenden Regeln...
  801.  
  802.  Bei RET=0 wird das Format ohne Schatten ausgegeben.
  803.  Bei RET  !=0 wird  das Format mit Schatten mit dem Attributwert
  804.  in RET ausgegeben.
  805.  
  806.  Die Attributwerte  für Monochrom-  bzw. Farbmodus finden Sie im
  807.  Anhang A3 (Vollversion).
  808.  
  809.  Die Schattenfunktion  ist für  Differenzausgaben (FKZ=3)  nicht
  810.  relevant.
  811.  
  812.  Der Schatten  wird am  rechten und  unteren Rand  des  Formates
  813.  angezeigt.
  814.  
  815.  Im  folgenden   Beispiel  wird   das  Format   <test>  mit  dem
  816.  Schattenattribut 15  (leuchten  im  Monochrommodus,  weiss  auf
  817.  schwarz im Farbmodus) ausgegeben (Syntax in C).
  818.  
  819.    #include "_UFC01.H"
  820.    #include "test.H"   main()
  821.    { FKZ=2;
  822.      SM=0;
  823.      RET=15; /* Schattenattribut */
  824.      memcpy(FMT,"test    ",8);
  825.      #include "test.i"
  826.      UNIF(&FKZ,FMT,test.fld0,&RET,&SM,Daten);
  827.    }
  828.  
  829.  
  830. 6.1.5 Dynamische Attributmodifikation
  831.  
  832. Jedes  Elenent   eines  Formates  ist  in  dem  Bereich  <Daten>
  833. hinterlegt. So sind u. a. die Farbattribute für Text, für Rahmen
  834. und für  alle variablen  Felder in einem Byte im Bereich <Daten>
  835. dargestellt. Das  gleiche gilt für den Feldtyp. Durch Modifizie-
  836. rung dieses  Bytes kann  das entsprechende  Attribut durch einen
  837. einzigen MOVE-Befehl geändert werden.
  838.  
  839. In der  Attribut-Distanzdatei (format.ATT)  werden die Distanzen
  840. zu  den   jeweiligen   Elementen   hinterlegt.   Die   Attribut-
  841. Distanzdatei wird  bei  der  Formatgenerierung  automatisch
  842. fürjedes Format erzeugt.
  843.  
  844. Folgende Distanzen im Bereich <Daten> werden angezeigt...
  845.  
  846.    Text-Farbattribut
  847.    Rahmen-Farbattribut
  848.    Feld-Farbattribut
  849.    Feld-Typ
  850.  
  851. Die Farbattribute  können durch  Veränderung des  Bytewertes mit
  852. den  Werten  0  bis  255  (siehe  Attributwerte  im  Anhang  A3)
  853. modifiziert werden.
  854.  
  855. Der Feldtyp  kann die  Werte <a>  für Ausgabefeld  bzw. <e>  für
  856. Eingabefeld enthalten.  Alle anderen  Zuweisungen sind  ungültig
  857. und führen zu unvorhergesehenen Ergebnissen.
  858.  
  859. Im folgenden  Beispiel wird das Textattribut und das Feld <fld0>
  860. im Format  <testfmt>  dynamisch  mit  mit  dem Farbattribut  15
  861. (leuchten im  Monochrommodus, weiss  auf schwarz  im  Farbmodus)
  862. ausgegeben. Das  Eingabefled <fld0> wird zum Ausgabefeld gemacht
  863. (Syntax in C).
  864.  
  865.    /*
  866.    attribut file <testfmt.att>
  867.    ---------------------------
  868.    Format-Textattribut:    8
  869.    Format-Rahmenattribut: 10
  870.    unsigned char fld0[12];
  871.     Distanzen in Bereich <Daten>:   Feldattribut: 500
  872.                                     Feldtyp: 502
  873.    long fld1;
  874.     Distanzen in Bereich <Daten>:   Feldattribut: 507
  875.                                     Feldtyp: 509
  876.    unsigned char fld2[40];
  877.     Distanzen in Bereich <Daten>:   Feldattribut: 514
  878.                                     Feldtyp: 516
  879.    */
  880.    #include "_ufc01.h"
  881.    #include "testfmt.h"
  882.    main()
  883.    {
  884.    /* einlesen Bereich <Daten> aus Formatlayout-Datei */
  885.    #include ""testfmt.i"
  886.    /* ändern Farbe von fld0 */
  887.    Daten[500]=(char)15;
  888.    /* ändern Feldtyp von fld0 */
  889.    Daten[502]='a';
  890.    /* ändern Farbe von Textbereich */
  891.    Daten[8]=(char)15;
  892.    FKZ = 2; RET=55;
  893.    /* testfmt modifiziert ausgeben */
  894.    UNIF(&FKZ, FMT, testfmt.fld0, &RET, &SM, Daten);
  895.    }
  896.  
  897. Die Anwendung  der dynamischen Attributmodifikation für alle von
  898. UniForm     unterstützten     Compiler     in     Form     eines
  899. Anwendungsbeispieles finden Sie in Kapitel 8.
  900.  
  901.  
  902. 6.2 Ablauf Compilerspezifisch
  903.  
  904. Im folgenden  werden compilerspezifische  Hinweise für  den For-
  905. mataufruf  mit   UniForm   übersichtlich   zusammengefaßt.   Die
  906. Übersicht  zeigt   insbesondere  alle   INCLUDE   Dateien,   die
  907. syntaktischen  Vorschriften  für  den  Aufruf  des  universellen
  908. Treiberprogrammes UNIF sowie Übersetzungs- und Linkvorschriften.
  909.  
  910. Ein  einfaches   Sourcebeispiel  verdeutlicht   schließlich  den
  911. Formateinsatz mit UniForm. In dem Sourcebeispiel wird das Format
  912. "order" am  Bildschirm angezeigt  und das  Programm  nach einer
  913. beliebigen Tasten(kombinations)eingabe  beendet (die Formatdatei
  914. ORDER.BLD finden  Sie auf  Ihren  Produktdisketten).  Das  Sour-
  915. cebeispiel  können   Sie   vom   UniForm-Formatgenerator   durch
  916. Generierung des  Formates ORDER  automatisch generieren lassen.
  917. UniForm erzeugt die Sourcedatei ORDER.SMP (SMP für sample).
  918.  
  919.  
  920. 6.2.1 Ablauf in MS C/ MS Quick C
  921.  
  922. Standard-Include-Datei
  923.  
  924.   _UFC01.H
  925.  
  926. Formatspezifische Include-Dateien
  927.  
  928.   <format>.H      Include-Datei für variable Felder
  929.   <format>.I      Include-Datei für Formatlayout
  930.  
  931. UNIF-Unterprogrammaufruf
  932.  
  933.   #include "<format>.I"
  934.   UNIF(&FKZ,FMT,&<format>.feldname,&RET,&SM,Daten);
  935.  
  936. Maussteuerung
  937.  
  938.   MOUSEON();      Maus initialisieren
  939.   MOUSEOFF();     Maus wieder ausschalten
  940.  
  941. Compilieren
  942.  
  943.   Bereitstellen der o. g. Include-Dateien
  944.  
  945. Linken
  946.  
  947.   einbinden UFC01S.OBJ  - Speichermodell Small
  948.   einbinden UFC01M.OBJ  - Speichermodell Medium
  949.   einbinden UFC01C.OBJ  - Speichermodell Compact
  950.   einbinden UFC01L.OBJ  - Speichermodell Large
  951.  
  952. Sourcebeispiel "ORDER.C" - Ausgeben Format ORDER
  953.  
  954. Übersetzen:  cl /AS /c order.c (MS C, Speichermodell SMALL)
  955.              qcl /AS /c order.c (MS Quick C, Speichermodell SMALL)
  956. Linken:      link order ufc01s
  957. Programmaufruf:    order
  958.  
  959. #include "_UFC01.H"  /* standard Include für MS C/ MS Quick C */
  960. #include "order.H" /* Definieren variable Felder aus <order> */
  961. main()
  962. { MOUSEON(); /* Maus initialisieren */
  963.   FKZ=2; /* Funktionskennzeichen */
  964.   SM=0; /* Cursorposition */
  965.   RET=112; /* Schattenattribut */
  966.   memcpy(FMT,"order   ",8); /* Formatname */
  967.   #include "order.i" /* Formatlayout in Daten */
  968.   UNIF(&FKZ,FMT,order.fld0,&RET,&SM,Daten); /* call UNIF */
  969.   MOUSEOFF(); /* Maus ausschalten */
  970. }
  971. Include-Datei für variable Felder ORDER.H
  972.  
  973. struct order {
  974. unsigned char product[20];
  975. unsigned char orderdate[8];
  976. unsigned char nr[20];
  977. long quantity;
  978. float price;
  979. } order;
  980.  
  981. Hinweise
  982.  
  983. Die Feldvariablen (format.H) sind global zu definieren.
  984.  
  985. Das Packen  von Strukturkomponenten  (Compileranweisung /Zp)
  986. ist nicht erlaubt.
  987.  
  988. Die Zeichen  ALT 0  und ALT  255 sind  in der Formatgenerierung
  989. nicht zugelassen.
  990.  
  991.  
  992. 6.2.2 Ablauf in Turbo C, Turbo C++
  993.  
  994. Standard-Include-Datei
  995.   _UFC02.H
  996.  
  997. Formatspezifische Include-Dateien
  998.  
  999.   <format>.H      Include-Datei für variable Felder
  1000.   <format>.I      Include-Datei für Formatlayout
  1001.  
  1002. UNIF-Unterprogrammaufruf
  1003.  
  1004.   #include "<format>.I"
  1005.   UNIF(&FKZ,FMT,&<format>.feldname,&RET,&SM,Daten);
  1006.  
  1007. Maussteuerung
  1008.  
  1009.   MOUSEON();      Maus initialisieren
  1010.   MOUSEOFF();     Maus wieder ausschalten
  1011.  
  1012. Compilieren
  1013.  
  1014.   Bereitstellen der o. g. Include-Dateien
  1015.  
  1016. Linken
  1017.  
  1018.   einbinden UFC02S.OBJ     - Speichermodell Small
  1019.   einbinden UFC02M.OBJ     - Speichermodell Medium
  1020.   einbinden UFC02C.OBJ     - Speichermodell Compact
  1021.   einbinden UFC02L.OBJ     - Speichermodell Large
  1022.  
  1023. Sourcebeispiel "ORDER.C" - Ausgeben Format ORDER
  1024.  
  1025. Übersetzen:  tcc -ms -c order (Speichermodell SMALL)
  1026. Linken:      tlink c0s order ufc02s, order,order,cs.lib
  1027. Programmaufruf:    order
  1028.  
  1029. #include "_UFC02.H"  /* standard Include für MS C/ MS Quick C */
  1030. #include "order.H" /* Definieren variable Felder aus <order>
  1031. */
  1032. main()
  1033. { MOUSEON(); /* Maus initialisieren */
  1034.   FKZ=2; /* Funktionskennzeichen */
  1035.   SM=0; /* Cursorposition */
  1036.   RET=112; /* Schattenattribut */
  1037.   memcpy(FMT,"order ",8); /* Formatname */
  1038.   #include "order.I" /* Formatlayout in Daten */
  1039.   UNIF(&FKZ,FMT,order.fld0,&RET,&SM,Daten); /* call UNIF */
  1040.   MOUSEOFF(); /* Maus ausschalten */
  1041. }
  1042.  
  1043. Include-Datei für variable Felder ORDER.H
  1044.  
  1045. struct order {
  1046. unsigned char product[20];
  1047. unsigned char orderdate[8];
  1048. unsigned char nr[20];
  1049. long quantity;
  1050. float price;} order;
  1051.  
  1052. Hinweise
  1053.  
  1054. Die Feldvariablen (format.H) sind global zu definieren.
  1055. Die Zeichen  ALT 0  und ALT  255 sind  in der  Formatgenerierung
  1056. nicht zugelassen.
  1057.  
  1058.  
  1059. 7 Ablauf im Beispiel
  1060.  
  1061. Der Formateinsatz  mit UniForm  wird im  folgenden durch weitere
  1062. Beispiele verdeutlicht.
  1063.  
  1064. Zunächst soll  das einfache  Anwendungsbeispiel  aus  Kapitel  3
  1065. geringfügig erweitert werden.
  1066.  
  1067. Nach der  Erfassung eines  Artikels im  Menü <order> soll in dem
  1068. überlappenden  leeren  Format  <message>  die  Aufnahme  in die
  1069. Datenbank bildlich bestätigt werden. Nach Programmbeendigung mit
  1070. der Funktionstaste  <F10> soll  der gesicherte  Bildschirminhalt
  1071. vor Programmaufruf wieder angezeigt werden.
  1072.  
  1073. Die  Generierung   des  Formates   <order>  ist   in  Kapitel  3
  1074. nachzulesen. Zur  Generierung des  Formates <message> ist einzig
  1075. zu bemerken,  daß es sich hier um ein sog. leeres Format (Format
  1076. ohne variable  Felder) handelt.  Somit  entfällt  der  Verarbei-
  1077. tungsschritt "Feldnamen/ Attribute" bei der Formaterstellung mit
  1078. dem  UniForm   Formatgenerator;   der   Formataufruf   muß   mit
  1079. Funktionskennzeichen FKZ = 4 erfolgen.
  1080.  
  1081. Das o.  g. Beispiel  ist in  diesem Kapitel in allen von UniForm
  1082. unterstützten Compilern  realisiert. Der Dialekt des Sourcecodes
  1083. in den  Listings bezieht  sich jeweils auf eine bestimme Version
  1084. des jeweiligen  Compilers. Etwaige  geringfügige Abweichungen in
  1085. älteren oder  neueren Versionen  entnehmen Sie  bitte aus
  1086. IhrenProgrammierhandbüchern.
  1087.  
  1088. Aus Gründen  der besseren  Lesbarkeit des Sourcecodings wurde in
  1089. den   Beispielen    weitgehend   auf    die    Prinzipien    der
  1090. wohlstrukturierten Programmierung verzichtet.
  1091.  
  1092. Das Sourcecodebeispiel  und die  beiden Formatdateien ORDER.BLD
  1093. und   MESSAGE.BLD   finden   Sie   übrigens   auch   auf   Ihren
  1094. Produktdisketten (siehe  Punkt 4.2,  Programmbeispiel  "order").
  1095. Compiler- und  Linkeranweisungen entnehmen Sie bitte aus Kapitel 6
  1096.  
  1097. Sie können  also das Programmbeispiel auf einfache Art und Weise
  1098. ausprobieren!
  1099.  
  1100. In  der   Vollversion  ist   das  Programmbeispiel  im  Handbuch
  1101. abgedruckt.
  1102.  
  1103.  
  1104. 8 Beispiel für "dynamische Attributmodifikation"
  1105.  
  1106. Durch  Modifiziern   des  Bereiches   <Daten>  haben   Sie   die
  1107. Möglichkeit die  Attribute für  Text, Rahmen und variable Felder
  1108. dynamisch, d. h. während des Programmablaufes zu modifizieren.
  1109. In einem  einfachen Beispiel  wird das  Ablaufprinzip der  o. g.
  1110. Funktion deutlich gemacht.
  1111.  
  1112. Das Format <TESTFMT> wird zunächst in den generierten Attributen
  1113. für Text,  Rahmen und  die beiden  variablen Felder  <fld0>  und
  1114. <fld1>  angezeigt.
  1115.  
  1116. Bei der  zweiten Ausgabe  werden die  Farben der  beiden  Felder
  1117. <fld0> und <fld1> modifiziert.
  1118.  
  1119. Bei der  dritten Ausgabe  wird der  Feldtyp  der  beiden  Felder
  1120. <fld0> und  <fld1> auf <Ausgabefeld> modifiziert. D. h. Sie sind
  1121. für den Benutzer nicht mehr zugänglich.
  1122.  
  1123. Bei der  vierten Ausgabe  werden die  Farben von Text und Rahmen
  1124. modifiziert.
  1125.  
  1126. Bei der  fünften und  letzten Ausgabe  wird das Schattenattribut
  1127. modifiziert.
  1128.  
  1129. Das Sourcecodebeispiel und die Formatdatei <TESTFMT.BLD> finden
  1130. Sie  wiederum  auf  Ihren  Produktdisketten  (siehe  Punkt  4.2,
  1131. Programmbeispiel  "dynamic").   Sie  können   also  auch  dieses
  1132. Programmbeispiel sofort  testen. Compiler- und Linkeranweisungen
  1133. entnehmen Sie bitte aus Kapitel 6.
  1134.  
  1135. In  der   Vollversion  ist   das  Programmbeispiel  im  Handbuch
  1136. abgedruckt.
  1137.  
  1138.  
  1139. 9 Beispiel für "Menüauswahl"
  1140.  
  1141. In  diesem   Beispiel   wird   der   Einsatz   von   Menüfeldern
  1142. demonstriert. Im  Ersten Format  <menu01> werden  die Menüpunkte
  1143. <Functions>  und   <Programend>  zur   Auswahl  angeboten.   Die
  1144. Funktionen   können    ausgewählt   werden   über   Cursor/Maus-
  1145. Positionierung und  Enter oder  durch die  Rechte Maustaste oder
  1146. durch Eingabe  der hervorgehobenen Buchstaben. Im zweiten Format
  1147. <menu02> wird  ein Pull-Down Format angezeigt mit den Funktionen
  1148. <file new,  file  open,  feile  delete  und  program  end>.  Die
  1149. Funktionsauswahl  kann   hier  neben   den  oben   beschriebenen
  1150. Möglichkeiten über  die entsprechende  Funktionstaste ausgewählt
  1151. werden. Im  letzten Format <menu03> wird lediglich eine Funktion
  1152. angedeutet, die durch Auswahl einer der Menüpunkte denkbar wäre.
  1153. Sie kehren mit jeder Eingabe zum ersten Format zurück.
  1154.  
  1155. Das Sourcecodebeispiel  und die  oben beschriebenen Formatdateien
  1156. finden Sie wiederum auf Ihren Produktdisketten (siehe Punkt 4.2,
  1157. Programmbeispiel "menu").
  1158.  
  1159.  
  1160. Anhang A1 - Cursorsteuerung
  1161.  
  1162. Die Cursor- und Maustasten werden im UniForm-Formatgenerator und
  1163. in mit UniForm eingesetzten Formaten wie fogt ausgewertet:
  1164.  
  1165. - Pfeil links   Cursor um 1 Spalte nach links. Bei Feldanfang
  1166.                 springen zu Feldende des vorherigen Feldes.
  1167. - Pfeil rechst  Cursor um 1 Spalte nach rechts. Bei Feldende
  1168.                 springen zu Feldanfang des nächsten Feldes.
  1169.  
  1170. - Home          Cursor auf Feldanfang des aktuellen Feldes.
  1171. - End           Cursor auf Feldende des aktuellen Feldes.
  1172.  
  1173. - Pfeil unten   Cursor auf Feldanfang des nächsten Feldes.
  1174. - Pfeil oben    Cursor auf Feldanfang des vorherigen Feldes.
  1175. - Page Down     Cursor auf Feldanfang des nächsten Feldes
  1176. - Page Up       Cursor auf Feldanfang des vorherigen Feldes.
  1177. - Back Slash    Löschen aktuelle Spalte und Cursor um 1 Zeichen
  1178.                 nach links.
  1179. - Del           Löschen Zeichen an Cursorposition. Das
  1180.                 Füllzeichen am Feldende ist Space. bzw. Null.
  1181.  
  1182. - Ins (Modus)   Einfügen Zeichen an Cursorposition. Das letzte
  1183.                 Zeichen geht verloren.
  1184.  
  1185.  
  1186. - Maustaste links  Cursor an Mausposition.
  1187.  
  1188. - Maustaste rechts Cursor an Mausposition und Rückkehr zum
  1189.                    aufrufenden Programm (Rückgabe ENTER (RET = 100)).
  1190.  
  1191.  
  1192. - Zeichen an Feldende   Cursor auf Feldanfang des nächsten
  1193.                         Feldes.
  1194.  
  1195. - SPACE (NUM-Felder)    Im Vorkammabereich wird SPACE
  1196.                         akzeptiert. Im Nachkommabereich wird SPACE
  1197.                         durch 0 ersetzt.
  1198. An
  1199. Ebnet Software
  1200.  
  1201. D-8000 München 70
  1202. Passauerstrasse 2 b
  1203.  
  1204.  
  1205. REGISTRIERUNG/ BESTELLUNG Softwareprodukt C-WINDOW
  1206. ------------------------------------------------------
  1207.  
  1208. Hiermit bestelle(n) ich(wir) das Softwareprodukt C-WINDOW
  1209. zum Preis von DM 85.-- zzgl. Versand (DM 4.--).
  1210.  
  1211. Die Bezahlung soll erfolgen:
  1212.  
  1213.    (  ) durch beigefügten Verrechnungsscheck
  1214.    (  ) durch Vorauszahlung auf das nachfolgendes  Konto:
  1215.         Postgiroamt München      
  1216.         BLZ. 700 100 80
  1217.         Konto 418194-800
  1218.    (  ) durch Postnachnahme zuzüglich Versandkosten
  1219.         (  ) in der BRD                 DM  3,--
  1220.         (  ) im Ausland                 DM 10,--
  1221.  
  1222. Die Lieferung soll erfolgen:
  1223.    (  ) im 5.25 Zoll Disketten-Format
  1224.    (  ) im 3.5  Zoll Disketten-Format  
  1225.  
  1226. Die genannten Preise verstehen sich inklusive Mehrwertsteuer.
  1227.  
  1228. Als registrierter Anwender werden Sie über künftige Programm-
  1229. versionen automatisch benachrichtigt. Neue Programm-Versionen
  1230. können im Updateservice zum Vorzugspreis von DM 45.-- bestellt
  1231. werden.
  1232.  
  1233. Anwenderunterstützung (telefonisch/schriftlich) wird ausnahmslos
  1234. für registrierte Anwender geleistet.
  1235.  
  1236. Absender:
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242. Datum/Unterschrift:
  1243.  
  1244.  
  1245. .............................
  1246.