Dieter Florkowski
Steinwerth 5
40489 Düsseldorf

Tel.:     (0203) 740588
Email:    webmaster@angersoft.de
Homepage: http://www.angersoft.de

-----------------------------------------------------------------------------


    Programm zur Erstellung von Tabellen mit variablen Tabellenfeldern

                       Letzte Änderung 30.05.2005


    Die vierstelligen Ziffern im Inhaltsverzeichnis sind Suchmarken.
    Sie führen an die Stelle der Beschreibung, die im Inhaltsverzeichnis
    angeben  wird. Auf eine durchgehende Numerierung wird zu Gunsten der
    Änderungsfreundlichkeit verzichtet.
    Die Nummer xxxxa* bedeutet Anfang des Abschnitts.
    Die Nummer xxxxb* bedeutet Ende des Abschnitts.

Inhaltsverzeichnis
--------------------------
4155 Programmname und Kurzbeschreibung                                        
0062 Systemvoraussetzungen                                                    
4154 Dateien                                                                  
4156 Anwenderdokumentation                                                    
4157    Einführung                                                            
0053       Allgemeine Beschreibung der Tabellenfelder                         
0057       Arbeitsweise des Programms                                         
0054       Beschreibungsdatei                                                 
0052       Benennung der Tabellenfelder                                       
4159       Verknüpfung der Tabellenfeldern                                    
0055    Die Anweisungen zur Beschreibung der Tabellenfelder                   
0060       Die Namensanweisung                                                
0061       Die Textanweisung                                                  
0063       Verknüpfungsanweisungen                                            
4517       Die Anweisungen f(0), f(1), f(2)                                   
4518       Die Anweisungen r(0), r(1)                                         
5303       Die Anweisungen Begrenzungslinien                                  
0058    Das Einmischen aktueller Werte und der Überschrift                    
4519    Beispiele                                                             
4520       Beispiel 1: zwei Tabellenfelder nebeneinander                      
4521       Beispiel 2: zwei Tabellenfelder untereinander                      
4522       Beispiel 3: eine kleine Tabelle                                    
4523       Beispiel 4: eine Nachtragung in Beispiel 3                         
4524       Beispiel 5: Eine große Tabelle, die aktualisiert wird              
=============================================================================

//4155a* Programmname und Kurzbeschreibung


Name:             "Vtab_a04.exe"

Das Programm unterstützt den Anwender bei der Erstellung von Tabellen, die
auf dem Bildschirm dargestellt werden sollen. Die Aktualisierung der Werte
in den Tabellenfeldern geschieht über eine Mischdatei, die im Allgemeinen
die Ausgabedatei eines Programms sein wird. Die Verbindung zwischen den
Sätzen der Mischdatei und den Tabellenfeldern wird über Symbole hergestellt,
so dass keine Reihenfolge bezüglich Daten und Tabellenfeldern zu beachten
ist. Durch die Verbindung über Symbole ist es sogar möglich, die
Tabellenfelder einer Tabelle mit unterschiedlichen Mischdateien aus
verschiedenen Quellen zu aktualisieren.

Die Überschrift der Tabelle wird mit der Mischdatei geliefert.

Die Tabellenfelder mit Beschriftung werden koordinatenfrei in einer
Beschreibungsdatei definiert. Die Koordinaten ergeben sich aus der
Beschriftung und Angaben darüber, wie die Tabellenfelder bei der Darstellung
auf dem Bildschirm zueinander liegen sollen. Schließlich wird die Tabelle
zentriert auf dem Bildschirm dargestellt.

Die Spalten der Tabelle sind unterschiedlich breit. Die Breite der Spalten
hängt von den Zeichenketten ab, die durch die Aktualisierung eingebracht
werden. Die Aktualisierungen erzeugen also von Fall zu Fall unterschiedliche
breite Spalten. Die Lage der Tabellenfelder zueinander bleibt jedoch gleich.

Nach der Erstellung der Tabelle kann das Ergebnis in einer Datei abgelegt
werden. Mit einem zweitem Show-Programm "Vtab.a02" und der abgelegten Datei
kann die Tabelle wieder auf dem Bildschirm dargestellt werden.

//4155b* Programmname und Kurzbeschreibung

//0062a* Systemvoraussetzungen

Das Programm "Vtab.a01" läuft unter Windows ab Windows 95.
Der Bildschirm muss eine Mindestauflösung von 800 mal 600 Pixel aufweisen.

//0062b* Systemvoraussetzungen


//4154a* Dateien

def-Datei (Eingabedatei)
-------------------------------
Diese Datei ist eine Ansi-Datei; als Definitionsdatei legt diese Datei die
Struktur der Tabelle fest.

Jede Zeile die dieser Datei entspricht einem Tabellenfeld. Die Zeilen
enthalten je einen Primärtext für das entsprechende Tabellenfeld.
Außerdem wird in jeder Zeile ein Name hinterlegt, der das Tabellenfeld
benennt. Der Anwender wird aufgefordert, eine entsprechende Datei
auszuwählen.

mix-Datei (Eingabedatei)
-----------------------------
Diese Datei ist eine Ansi-Datei. Sie stellt die Verbindung her zwischen den
aktuellen Werten und den Tabellenfeldern. Die Verbindung geschieht über den
Namen, die in der def-Datei hinterlegt wurden. Die Primärtexte werden durch
die aktuellen Texte ersetzt. Wenn keine mix-Datei benutzt wird, werden die
Tabellenfelder mit den Primärtexten beschriftet.

str-Datei (Eingabe-, Ausgabedatei)
--------------------------------------------
Diese Datei ist eine interne Datei, welche die fertige Tabellenstruktur mit
den aktualisierten Texten enthält. Diese Datei kann für erneute
Aktualisierungsvorgänge herangezogen werden.

tab-Datei (Ausgabedatei)
--------------------------------
Diese Datei ist eine interne Datei und für das Programm Vtab_b04 bestimmt.
Es enthält die fertige (aktualisierte) Tabelle. Mit dem Programm Vtab_b04
können die Tabellen der tab-Datei angezeigt werden.

//4154b* Dateien

//4156a* Anwenderdokumentation

//4157a* Einführung

//0053a* Allgemeine Beschreibung der Tabellenfelder

Tabellenfelder sind Rechtecke, die auf dem Bildschirm dargestellt werden.
Sie haben vier Kanten a, b, c und d, wie das in der folgenden Skizze
dargestellt wird.

                                   Kante d
                       ................................
                       .                              .
                       .                              .
               Kante a .                              .
                       .                              . Kante c
                       .                              .
                       .                              .
                       ................................
                                   Kante b

Die Lage eines Rechtecks auf dem Bildschirm ist

1.                durch die x-Koordinaten der Kanten a und c
und
2.                durch die y-Koordinaten der Kanten b und d

eindeutig bestimmt.

In den Tabellenfelder (Rechtecke) werden im Allgemeinen Zeichenketten
dargestellt. Ein einzelnes Tabellenfeld kann mehrere Zeichenketten enthalten,
diese werden jeweils in einer Zeile dargestellt.

//0053b* Allgemeine Beschreibung der Tabellenfelder

//0057a* Arbeitsweise des Programms

Das Programm fordert zunächst über Auswahlmenüs die def-Datei bzw. die str-
Datei an. Anschließend wird die mix-Datei angefordert. Hierbei kann der
Anwender auf die Verwendung der Mischdatei verzichten. In diesem Fall wird
die Tabelle mit den Primärtexten angezeigt. Die Memüführung gibt dem Anwender
nun die Gelegenheit, die Tabelle anzuschauen und anschließend als Ergebnis rauszuschreiben.
Beim Schreiben der fertigen Tabelle kann die tab-Datei gewählt werden,
die später im Programm Vtab_b04 zu verwenden ist. Für das Schreiben der tab-Datei gibt es zwei
Möglichkeiten:

1.  Die  vorliegende Tabelle wird als einzige Tabelle in die tab-datei geschrieben. Falls die tab-datei
     alte Tabellen enthält, werden diese gelöscht und die neue Tabelle als einzige Tabelle der Datei
     in die tab-Datei geschrieben.

     Menüpunkt    „tab-Datei schreiben neu“

2.  die vorliegende Tabelle wird an einen eventuell vorliegende alten Bestand der tab-Datei angehängt.
     Damit bleiben alte Tabellen im tab-Bestand erhalten.

     Menüpunkt  „tab-Datei schreiben modifiziert "       

Die tab-Datei kann also mehrere Tabellen enthalten. Das Programm Vtab_b04 kann diese Tabellen anzeigen.

Das Ergebnis kann aber auch als str-Datei für spätere Aktualisierungen rausgeschrieben werden. 
Eine str-Datei kann nur eine Tabelle enthalten. 

Das Ergebnis kann auch als Bitmap rausgeschrieben werden; damit ist die Möglichkeit  gegeben, die Tabellen in die meisten Produkte mit Bildverarbeitung zu übernehmen. 

Es folgt ein Beispiel einer Tabelle (Telefonverbindungen),  die als Bitmap erstellt wurde und mit gängiger Software in eine 
Jpg-Datei umgewandelt wurde:


//0057b* Arbeitsweise des Programms //0054a* Beschreibungsdatei Die Datei "tabtext.txt" ist eine Ansi-Datei und kann mit einem entsprechenden Editor erstellt und bearbeitet werden. Jede Zeile dieser Datei beschreibt genau ein Tabellenfeld. Unter anderem ist die Beschriftung des Tabellenfeldes in der entsprechenden Zeile dieser Datei enthalten. Weitere Eintragung in den Zeilen der Datei "tabtext.txt" werden weiter unten beschrieben. Die Datei "tabtext.txt" heißt Beschreibungsdatei //0054b* Beschreibungsdatei //0052a* Benennung der Tabellenfelder Jedes Tabellenfeld erhält einen Namen, damit das Tabellenfeld in Anweisungen angesprochen werden kann. Der Name wird in der dem Tabellenfeld zugeordneten Zeile in der Datei "tabtext.txt" erklärt, und zwar in einer speziellen Anweisung. Auf diese Art werden die Kanten in dem Tabellenfeld "Otto" wie folgt angesprochen: Otto.a Otto.b Otto.c Otto.d Die Tabellenfelder sind hiermit genau einem Namen und einer Zeile der Beschreibungsdatei zugeordnet. 0056* Tabellenfeld <--> Name <--> Zeile in der Beschreibungsdatei //0052b* Benennung der Tabellenfelder //4159a* Verknüpfung der Tabellenfeldern Es gibt keine Möglichkeit, Koordinatenwerte für die Tabellenfelder einzugeben. Das Programm erstellt die Koordinaten selbst und ordnet die Tabellenfelder so an, wie die Verknüpfungsanweisungen es vorschreiben. Dem Anwender bleibt somit die gestalterische Tätigkeit hinsichtlich der Lage der Tabellenfelder erspart. Die Verknüpfungsanweisungen beziehen sich auf die Kanten der Tabellenfelder, wenn zwei Tabellenfelder nebeneinander liegen sollen, werden die entsprechenden Kanten verknüpft. Die Verknüpfungsanweisungen werden in der def-Datei abgelegt. //4159b* Verknüpfung der Tabellenfeldern //4157b* Einführung //0055a* Die Anweisungen zur Beschreibung der Tabellenfelder Jede Zeile der Datei "tabtext.txt" erzeugt ein Tabellenfeld. Dieses Tabellenfeld wird mit folgenden Anweisungen beschrieben: //0060a* Die Namensanweisung Eine Anweisung in jeder Zeile. "" : enthält den Namen, der 16 Stellen lang sein darf. Blanks sind als Zeichen für den Namen zugelassen In jeder Zeile muss eine Anweisung eingetragen sein. Beispiele: "a1" "a 1" "b_11" //0060b* Die Namensanweisung //0061a* Die Textanweisung Eine Anweisung in jeder Zeile. '': enthält die Beschriftungszeichenkette für die Darstellung auf dem Bildschirm. Das Zeichen "|" bewirkt einen Zeilenumbruch In jeder Zeile darf nur eine Anweisung eingetragen sein. bis zu zehn Zeilen sind zugelassen. Beispiele: 'Datum' Darstellung auf dem Bildschirm Datum 'Preis|in €' Darstellung auf dem Bildschirm Preis in € //0061b* Die Textanweisung //0063a* Verknüpfungsanweisungen Bis zu vier Verknüpfungsanweisungen dürfen in jeder Zeile eingetragen sein (Für jede Kante eine Anweisung). Die Verknüpfungsanweisungen bestimmen für die Darstellung der Tabelle auf dem Bildschirm die Lage der Tabellenfelder zueinander. Die Verknüpfungsanweisungen deklarieren jeweils zwei senkrechte oder zwei waagerechte Kanten zweier Tabellenfelder; diese Tabellenfelder werden vom Programm so angelegt, dass die beiden Kanten aneinander oder auf einer Geraden liegen. Durch diese Verknüpfungen wird schließlich die Lage der Tabellenfelder zueinander festgelegt. Die aktuellen Koordinaten für die Darstellung auf dem Bildschirm werden vom Programm bestimmt. Eine Verknüpfungsanweisung ist wie folgt einzutragen. xk1=xn2.xk2 Es ist einzusetzen für xk1: eine Kantenbezeichnung a oder b oder c oder d. Es ist einzusetzen für xn2: ein Name, der zu einem Tabellenfeld gehört und in einer Namensanweisung erklärt wurde. Es ist einzusetzen für xk2: eine Kantenbezeichnung a oder b oder c oder d. Erklärung --------- Die Verknüpfungsanweisung xk1=xn2.xk2 befindet sich in einer bestimmten Zeile der def-Datei. In dieser Zeile sei als Namensanweisung "xn1" eingetragen. Hiermit ist die Kante "xk1" des Tabellenfeldes "xn1" erklärt worden. Nach (0056) liegt diese Situation vor: Tabellenfeld Name Zeile in der Beschreibungsdatei ------------------------------------------------------------ xn1 xn1 "xn1" 'xtext1' xk1=xn2.xk2 xn2 xn2 "xn2" 'xtext2' In dem System der Tabellenfelder sind die Kanten xn1.xk1 und xn2.xk2 erklärt worden. Das Programm verschiebt eine der beiden Kanten nach rechts bzw. nach unten, so dass die beiden Kanten auf einer Geraden liegen. Die beteiligten Tabellenfelder werden entsprechend angepasst. Nach Gestaltung der Tabellenfelder durch das Programm wird die fertige Tabelle horizontal zentriert am Bildschirm dargestellt. Anmerkung: --------- Die Tabellenfelder werden zunächst so angelegt, dass die Kanten a und d auf den Koordinaten 0 liegen. Durch die Verknüpfungsanweisungen verschieben sich die Felder nach rechts und nach unten. Beispiel 1: ----------- Tabellenfeld 1: Zeile im Beschreibungssatz "t1" 'Schrift 1' c=t2.a Kante d ............. Kante a .Schrift 1 . Kante c . . ............. Kante b Tabellenfeld 2: Zeile im Beschreibungssatz "t2" 'Schrift 2' Kante d ............. Kante a .Schrift 2 . Kante c . . ............. Kante b Ergebnis -------- ........................ .Schrift 1 .Schrift 2 . . . . ........................ Die Tabellenfelder liegen also nebeneinander in der Reihenfolge "t1", "t2". Die abschließender Zentrierung ist hier nicht berücksichtigt worden. Beispiel 2: ----------- Tabellenfeld 1: Zeile im Beschreibungssatz "t1" 'Schrift 1' b=t2.d Kante d ............. Kante a .Schrift 1 . Kante c . . ............. Kante b Tabellenfeld 2: Zeile im Beschreibungssatz "t2" 'Schrift 2' Kante d ............. Kante a .Schrift 2 . Kante c . . ............. Kante b Ergebnis -------- ............. .Schrift 1 . . . ............. .Schrift 2 . . . ............. Die Tabellenfelder liegen also untereinander in der Reihenfolge "t1", "t2". Die abschließender Zentrierung ist hier nicht berücksichtigt worden. //0063b* Verknüpfungsanweisungen //4517a* Die Anweisungen f(0), f(1), f(2) Diese Anweisungen Steuern die Schrift eines Tabellenfeldes: f(0): Fette große Schrift (default) f(1): Courierschrift f(2): Proportionalschrift //4517b* Die Anweisungen f(0), f(1), f(2) //4518a* Die Anweisungen r(0), r(1) Anweisungen r(0) r(1) ---------------------------- Diese Anweisungen steuern die Repräsentation der Schrift in einem Tabellenfeld: r(0): Schrift wird linksbündig in das Tabellenfeld eingetragen. r(1): Schrift wird zentriert in das Tabellenfeld eingetragen. //4518b* Die Anweisungen r(0), r(1) //5303a* Die Anweisungen Begrenzungslinien lx(y) x: Kantenbezeichnung: a oder b oder c oder d y: Strichstärke in Pixeln: 1 oder 2 Wirkung: Die Kante x des Tabellenfeldes wird mit einer Begrenzungslinie der Stärke y versehen Beispiel: lb(1) - Die Anweisung befindet sich in einer Zeile der Definitionsdatei das entsprechende Tabellenfeld erhält auf der Kante b eine Begrezungslinie der Stärke 1. Eine Begrenzungsline zweier Tabellenfelder, die von zwei benachbarten Feldern (doppelt) beschrieben wird, hat die Strichstärke 1, wenn die beiden Befehle für die Begrenzungslinien in den benachbarten Feldern ebenfalls die Strichstärke 1 hat. Andere Strichstärken führen zu unvorhersehbahren Strichstärken der Begrenzungslinie. //5303b* Die Anweisungen Begrenzungslinien //0055b* Die Anweisungen zur Beschreibung der Tabellenfelder //0058a* Das Einmischen aktueller Werte und der Überschrift Das Programm "Vtab.a01" mischt über die mix-Datei (4154) aktuelle Werte ein. Die Mischdatei ist eine Ansi-Datei. Der erste Satz der Ansi-Datei enthält die Überschrift. Nach der Überschrift folgen eine oder mehrere Leerzeilen (auch Nullzeilen sind zugelassen), so dass Überschrift und Leerzeilen zusammen mindestens 80 Bytes betragen. Die folgenden Zeilen dieser Datei enthält zwei Anweisungen, die Namensanweisung "" und die Textanweisung ''. Die beiden Anweisungen sind wie in (0055) aufgebaut. Die Funktion der Anweisungen einer Zeile aus der Mischdatei ist diese: Zu dem aufgeführten Namen wird die entsprechende Zeile der Datei "tabtext.txt" aufgesucht und die Textanweisung '' gemäß dem Text der Zeile aus der Mischdatei ausgetauscht. Damit ändert sich die Beschriftung des entsprechenden Tabellenfeldes. Insbesondere gilt: Wenn der Text aus "tabtext.txt" länger ist als der Text aus tabtext.inp, wird, entsprechend der Länge des Texte aus tabtext.inp, nur der linke Teil des Textes aus "tabtext.txt" ausgetauscht. Wenn der Text aus "tabtext.inp" länger ist als der Text aus tabtext.txt, wird der Text nur in der Länge des Textes in "tabtext.txt" ausgetauscht. Beispiel: --------- Eingabe: -------- Zeile aus "tabtext.txt" "t" 'Schrift 1' Zeile aus "tabtext.inp" "t" 'Schrift 2' Ergebnis: --------- Das Tabellenfeld "t" erhält die Beschriftung 'Schrift 2'. //0058b* Das Einmischen aktueller Werte und der Überschrift //4519a* Beispiele //4520a* Beispiel 1: zwei Tabellenfelder nebeneinander Def-Datei (Definition der Tabellenfelder): "Beispiel_1.def": Mix-Datei (Mischdatei mit den aktuellen Werten) "Beispiel_1.mix": Tab-Datei (Datei der fertigen Tabelle): "Beispiel_1.tab" //4520b* Beispiel 1: zwei Tabellenfelder nebeneinander //4521a* Beispiel 2: zwei Tabellenfelder untereinander Def-Datei (Definition der Tabellenfelder): "Beispiel_2.def": Mix-Datei (Mischdatei mit den aktuellen Werten) "Beispiel_2.mix": Tab-Datei (Datei der fertigen Tabelle): "Beispiel_2.tab" //4521b* Beispiel 2: zwei Tabellenfelder untereinander //4522a* Beispiel 3: eine kleine Tabelle Def-Datei (Definition der Tabellenfelder): "Beispiel_3.def": Mix-Datei (Mischdatei mit den aktuellen Werten) "Beispiel_3.mix": Tab-Datei (Datei der fertigen Tabelle): "Beispiel_3.tab" In dieser Tabelle hat sich bei den Verknüpfungen folgendes Prinzip bewährt: Grundsätzlich sollten alle Kanten a,b,c,d eines Tabellen verknüpft werden. Die Verknüpfungen müssen sich nicht auf Kanten beziehen, die aufeinander fallen sollen. Es ist sinnvoll, eine horizontalen Kante mit der Kante eines Tabellenfeldes am Anfang der entsprechenden Zeile zu verknüpfen. Die beiden zu verknüpfenden Kanten müssen nur auf gleicher Höhe sein. Damit kann man für weiter rechts liegende Tabellenfelder die entsprechenden Verküpfungen übernehmen. Die beiden Zeilen der Datei "Beispiel_3.def" "a0202" 'Tabellenfeld 2.2|Zeile 2' a=a0201.c b=a0201.b c=a0102.c d=a0102.b f(2) "a0203" 'Tabellenfeld 2.3' a=a0202.c b=a0201.b c=a0103.c d=a0103.b f(2) enthalten beide die Verknüpfung b=a0201.b . Dieser Grundsatz bewährt sich auch bei vertikalen Kanten. Dies zeigen die Zeilen: "a0201" 'Tabellenfeld 2.1' c=a0101.c d=a0101.b f(2) "a0301" 'Tabellenfeld 3.1' a=a0101.a c=a0101.c d=a0201.b f(2) Die Verknüpfung c=a0101.c ist in beiden Zeilen enthalten. //4522b* Beispiel 3: eine kleine Tabelle //4523a* Beispiel 4: eine Nachtragung in Beispiel 3 Def-Datei (Definition der Tabellenfelder): "Beispiel_4.def": Mix-Datei (Mischdatei mit den aktuellen Werten) "Beispiel_4.mix": Tab-Datei (Datei der fertigen Tabelle): "Beispiel_4.tab" Es wird angenommen in Beispiel 3 ist ein Feld vergessen worden. Dies wird nachgetragen. Die Dateien ergeben sich mit den entsprechenden Änderungen. //4523b* Beispiel 4: eine Nachtragung in Beispiel 3 //4524a* Beispiel 5: Eine große Tabelle, die aktualisiert wird Def-Datei (Definition der Tabellenfelder): "Beispiel_5.def": Mix-Datei (Mischdatei mit den aktuellen Werten) "Beispiel_5.mix": Tab-Datei (Datei der fertigen Tabelle): "Beispiel_5.tab" Beispiel 5 ist eine Tabelle wie die einen realen Hintergrund hat. Es ist eine Auflistung der Einzelverbindungen meiner Telekomrechnung. Die Informationen stammen aus der csv-Datei der Telekom, aus der mittels eines Programms die inp-Datei erstellt wurde. Die Runfnummern sind nachträglich verfälscht worden. //4524b* Beispiel 5: Eine große Tabelle, die aktualisiert wird //4519b* Beispiele //4156b* Anwenderdokumentation .