                                  - TOC-   1 -





 Unit GvTable .........................................................      1
 Init,TTableField .....................................................      1
 TAlignment-Typ  (Unit GvTable) .......................................      1
 TTableField-Objekt  (unit GvTable) ...................................      1
 lfColoredTable-Konstante  (Unit GvTable) .............................      1
 TTableFields.CenterField-Methode .....................................      2
 TTableFields.Gap-Feld ................................................      2
 TTableFields.Init-Konstruktor ........................................      2
 TTableFields.Position-Feld ...........................................      2
 TTableFields-Objekt ..................................................      2
 TTableFields.DecimalField-Methode ....................................      3
 TTableFields.LeftField-Methode .......................................      3
 TTableFields.RightField-Methode ......................................      3
 TTableViewer-Objekt  (Unit GvTable) ..................................      3
 TTableViewer.Done-Destruktor .........................................      4
 TTableViewer.HDelta-Feld .............................................      4
 TTableViewer.HScrollbar-Feld .........................................      4
 TTableViewer.Init-Konstruktor ........................................      4
 TTableViewer.TableFields-Feld ........................................      4
 TTableViewer.Draw-Methode ............................................      5
 TTableViewer.DrawItem-Methode ........................................      5
 TTableViewer.DrawItemText-Methode ....................................      5
 TTableViewer.DrawTitle-Methode .......................................      5
 TTableViewer.DrawVertLines-Methode ...................................      5
 TTableViewer.GetTitleRect-Methode ....................................      5
 TTableItem-Objekt  (Unit GvTable) ....................................      5
 TTableItem.GetText-Methode ...........................................      6
 TTable.Info-Feld .....................................................      6
 TTable.Init-Konstruktor ..............................................      6
 TTable-Objekt  (Unit GvTable) ........................................      6
 TTable.GetInfo-Methode ...............................................      7
 TTable.GetText-Methode ...............................................      7
 TTable.Load-Konstruktor ..............................................      7
 TTable.PutInfo-Methode ...............................................      7
 RegisterGvTable-Prozedur  (Unit GvTable) .............................      7
 TTable.Store-Methode .................................................      7





















                                  - TOC-   1 -
                                    -    1 -






Unit GvTable
 
Diese Graphics-Vision-Unit ermglicht Ihnen die Verwendung von
mehrspaltigen Tabellen. Den einzelnen Spalten knnen Parameter
wie Ausdehnung, Textausrichtung und Titel zugeordnet werden.

 Objekte:

 TTableField
 TTableFields
 TTableViewer
 TTableItem
 TTable

 Typen:

 TAlignment

 Konstanten:

 lfColoredTable

 Prozeduren:

 RegisterGvTable

lfColoredTable-Konstante  (Unit GvTable)
 
 Deklaration:
lfColoredTable = $0100;

Ist dieses Flag im Flags-Feld eines
TTableViewer-Objekts gesetzt, erscheint jede zweite
Tabellenzeile farblich unterlegt.

TAlignment-Typ  (Unit GvTable)
 
 Deklaration:
TAlignment = (LeftAlign, CenterAlign, RightAlign, DecimalAlign);

Dieser Typ wird in TTableField-Objekten verwendet,
um die Textausrichtung festzulegen.

TTableField-Objekt  (unit GvTable)
 
Ein Objekt dieses Typs reprsentiert eine Tabellenspalte.

 Felder:

 Title
 Alignment
 Left
 Right
 Decimal

 Methoden:

 Init
 Load
 Done
 Store

Init,TTableField



                  gvtable, Page #   1   Date 22-7-1996 Monday
                                    -    2 -





 
 Deklaration:

  constructor Init(ATitle: string; AnAlignment: TAlignment;
    ALeft, ARight: Integer; ADecimal: Integer);

Initialisiert eine Tabellenspalte. Die Parameter werden den
entsprechenden Feldern zugewiesen.


 Feld              Bedeutung
   
 Title             berschrift der Tabellenspalte.
 Alignment         Ausrichtung des Textes, siehe TAlignment.
 Left              Linker Rand der Tabellenspalte in Pixeln.
 Right             Rechter Rand der Tabellenspalte in Pixeln.
 Decimal           Anzahl der reservierten Dezimalstellen
                   (nur relevant bei Alignment=DecimalAlign).


TTableFields-Objekt
 
Dieser TCollection-Nachfolger ist auf die Aufnahme von
TTableField-Objekten spezialisiert. Er verfgt ber Methoden, um
komfortabel Tabellenspalten einzufgen.

 Felder:

 Position
 Gap

 Methoden:

 Init
 CenterField
 DecimalField
 LeftField
 RightField

TTableFields.Position-Feld
 
 Deklaration:
Position: Integer;

Dieses Feld speichert die Pixelstelle, an der die nchste Tabellenspalte
erscheinen kann. Es wird von Init auf 0 gesetzt und
bei jedem Aufruf der ...Field-Methoden angepat.

TTableFields.Gap-Feld
 
 Deklaration:
Gap: Integer;

Dieses Feld speichert die Zahl der Pixel, die zwischen Tabellenspalten
frei bleiben sollen. Es wird von Init auf 3 gesetzt.

TTableFields.Init-Konstruktor
 
 Deklaration:
constructor Init;

Initialisiert die Kollektion und setzt Position
auf 0 und Gap auf 3.



                  gvtable, Page #   2   Date 22-7-1996 Monday
                                    -    3 -






TTableFields.CenterField-Methode
 
 Deklaration:
procedure CenterField(ATitle: string; Width: Integer);

Diese Methode erzeugt eine neue Tabellenspalte
(TTableField-Objekt), die die berschrift
ATitle trgt und Width Pixel breit ist, und fgt sie
in die Kollektion ein. Als Textausrichtung wird CenterAlign
vorgegeben.

TTableFields.LeftField-Methode
 
 Deklaration:
procedure LeftField(ATitle: string; Width: Integer);

Diese Methode erzeugt eine neue Tabellenspalte
(TTableField-Objekt), die die berschrift
ATitle trgt und Width Pixel breit ist, und fgt sie
in die Kollektion ein. Als Textausrichtung wird LeftAlign
vorgegeben.

TTableFields.RightField-Methode
 
 Deklaration:
procedure RightField(ATitle: string; Width: Integer);

Diese Methode erzeugt eine neue Tabellenspalte
(TTableField-Objekt), die die berschrift
ATitle trgt und Width Pixel breit ist, und fgt sie
in die Kollektion ein. Als Textausrichtung wird RightAlign
vorgegeben.

TTableFields.DecimalField-Methode
 
 Deklaration:
procedure DecimalField(ATitle: string; Width: Integer; Decimal: Integer);

Diese Methode erzeugt eine neue Tabellenspalte
(TTableField-Objekt), die die berschrift
ATitle trgt und Width Pixel breit ist, und fgt sie
in die Kollektion ein. Als Textausrichtung wird DecimalAlign
vorgegeben. Es werden Decimal Dezimalstellen reserviert.

TTableViewer-Objekt  (Unit GvTable)
 
Dieser TListBox-Nachfolger ist darauf spezialisiert,
mehrspaltige Tabellen mit Kopf darzustellen. Die GetText-Methode
mu die Texte fr die einzelnen Spalten durch Tabulatorzeichen
getrennt liefern.

Zur Beschreibung des Formats wird dem Konstruktor eine Kollektion
von TTableField-Objekten bergeben, welche die
einzelnen Spalten reprsentieren.

Zustzlich zu der von TListBox geerbten vertikalen Auswahl ist
ein TTableViewer mit einer horizontalen Scrollbar versehen.

 Felder:

 HScrollbar
 HDelta



                  gvtable, Page #   3   Date 22-7-1996 Monday
                                    -    4 -





 TableFields

 Methoden:

 Init
 Load
 Done
 Awaken
 ChangeBounds
 Draw
 DrawItem
 DrawItemText
 DrawTitle
 DrawVertLines
 GetItemRect
 GetItemSubRect
 GetTitleRect
 HandleEvent
 Store

TTableViewer.HScrollbar-Feld
 
 Deklaration:
HScrollbar: PScrollbar;

Speichert einen Zeiger auf die horizontale Scrollbar der Tabelle.

TTableViewer.HDelta-Feld
 
 Deklaration:
HDelta: Integer;

Speichert die relative Position des linken Randes in der Tabelle.
Methoden wie DrawItemText beachten diesen Wert, um einen spezifischen
Ausschnitt aus der Tabelle darzustellen.

HDelta wird von HandleEvent in Reaktion auf HScrollbar-Botschaften
angepat.

TTableViewer.TableFields-Feld
 
 Deklaration:
TableFields: PCollection;

Speichert eine Kollektion von TTableField-Objekten,
welche die einzelnen Spalten beschreiben.

TTableViewer.Init-Konstruktor
 
 Deklaration:

  constructor Init(var Bounds: TRect; AHScrollbar, AVScrollbar: PScrollbar;
    ATableFields: PCollection);

Ruft TListBox.Init(Bounds, AVScrollbar) auf, um das Objekt zu
initialisieren. Dann wird HScrollbar mit
AHScrollbar belegt. ATableFields wird in dem Feld
TableFields gespeichert und gehrt dann
dem TTableViewer-Objekt.

TTableViewer.Done-Destruktor
 



                  gvtable, Page #   4   Date 22-7-1996 Monday
                                    -    5 -





 Deklaration:
destructor Done; virtual;

Entfernt TableFields aus dem Speicher
und ruft dann die geerbte Done-Methode auf.

TTableViewer.Draw-Methode
 
 Deklaration:
procedure Draw; virtual;

Ruft zunchst TListViewer.Draw auf, um die
Tabelleneintrge zu malen. Dann wird mittels DrawTitle
die berschrift dargestellt. Unterhalb der berschrift wird eine
horizontale Linie gezeichnet. Die vertikalen Linien werden mittels
DrawVertLines gezeichnet.

TTableViewer.DrawItem-Methode
 
 Deklaration:
procedure DrawItem(Item: Integer); virtual;

Wenn das Flag lfColoredTable gesetzt ist, stellt diese
Methode jeden zweiten Eintrag farblich hinterlegt an.

TTableViewer.DrawItemText-Methode
 
 Deklaration:
procedure DrawItemText(Item: Integer; R: TRect); virtual;

Diese Methode zeichnet zunchst die vertikalen Linien durch einen
Aufruf von DrawVertLines. Dann ermittelt
sie durch GetText eine textuelle Beschreibung des Tabelleninhalts
der Zeile Item.

Von diesem String wird erwartet, da er die Inhalte der einzelnen
Spalten, getrennt durch Tab-Zeichen (#9), enthlt. DrawItemText
zerlegt den String entsprechend und gibt unter Beachtung der
Spaltenparameter die Teile aus.

TTableViewer.DrawTitle-Methode
 
 Deklaration:
procedure DrawTitle; virtual;

Diese Methode stellt die berschriftstexte dar.

TTableViewer.DrawVertLines-Methode
 
 Deklaration:
procedure DrawVertLines; virtual;

Diese Methode zeichnet vertikale Linien zwischen den einzelnen
Spalten.

TTableViewer.GetTitleRect-Methode
 
 Deklaration:
procedure GetTitleRect(var R: TRect); virtual;

Ermittelt das lokale Rechteck, in dem die berschriften dargestellt werden
sollen.

Die GetItemRect- und GetItemSubRect-Methoden sind so angepat
worden, da sie Platz fr diesen Bereich lassen.

TTableItem-Objekt  (Unit GvTable)
 



                  gvtable, Page #   5   Date 22-7-1996 Monday
                                    -    6 -





Im Gegensatz zu dem allgemeineren TTableViewer-Objekt
erwartet TTable, da seine Listeneintrge Nachfolger von
TTableItem sind. Dadurch kann er die GetText-Methoden seiner Eintrge
aufrufen, um die textuelle Reprsentation des Tabelleninhalts zu ermitteln.

TTableItem ist direkter Nachfolger von TObject.

 Methode:

 GetText

TTableItem.GetText-Methode
 
 Deklaration:
function GetText(Info: LongInt): string; virtual;

Ruft Abstract auf.

Wenn Sie in einem Nachfolger dieses Objekts Daten speichern, so mssen
Sie diese Methode berschreiben und einen String zurckgegeben, der
die Inhalte der einzelnen Tabellenspalten, getrennt durch
Tab-Zeichen (#9), enthlt.

Wenn Ihre Daten mehrere verschiedene Tabellen-Darstellungen haben,
knnen Sie den Parameter Info verwenden.
(Siehe TTable.Init.)

TTable-Objekt  (Unit GvTable)
 
Dieser TTableViewer-Nachfolger ist darauf spezialisiert,
TTableItem-Objekte aufzunehmen. Dadurch kann der
GetText-Mechanismus (nmlich die Umwandlung der internen Daten in
eine textuelle Reprsentation) auf die Ebene Ihrer Datenobjekte
verschoben werden.

 Felder:

 Info

 Methoden:

 Init
 Load
 GetInfo
 GetText
 PutInfo
 Store

TTable.Info-Feld
 
 Deklaration:
Info: LongInt;

Dieses Feld wird durch GetText an
TTableItem.GetText bergeben. Wenn es dort
entsprechend ausgewertet wird, knnen Sie dadurch verschiedene
Darstellungen des gleichen Eintrags erzielen.

TTable.Init-Konstruktor
 
 Deklaration:




                  gvtable, Page #   6   Date 22-7-1996 Monday
                                    -    7 -





  constructor Init(var Bounds: TRect; AHScrollbar, AVScrollbar: PScrollbar;
    ATableFields: PCollection; AnInfo: LongInt);

Zustzlich zu der Funktionalitt von TTableViewer.Init
wird der Parameter AnInfo im Feld Info gespeichert.

Er wird in TTable nicht verwendet, aber bei jedem
GetText-Aufruf an TTableItem.GetText
bergeben.

TTable.Load-Konstruktor
 
 Deklaration:
constructor Load(var S: TStream);

Ldt das Objekt mittels des geerbten Load-Konstruktors aus dem Stream.
Dann wird GetInfo aufgerufen, um das Info-Feld zu laden.

TTable.GetInfo-Methode
 
 Deklaration:
procedure GetInfo(var S: TStream); virtual;

Diese Methode mu das Info-Feld aus dem Stream lesen.
Diese Implementation geht davon aus, da es sich tatschlich um einen
LongInt-Wert handelt.

Sie mssen die Methode berschreiben, wenn Sie hier
einen Zeiger auf irgendeine Datenstruktur abgelegt haben.

TTable.GetText-Methode
 
 Deklaration:
function GetText(Item: Integer; MaxLen: Integer): string; virtual;

Interpretiert den Tabelleneintrag mit Nummer Item als
TTableItem-Objekt und ruft dessen Methode
GetText auf. Als Info-Parameter wird
der Methode das Feld Info bergeben.

TTable.PutInfo-Methode
 
 Deklaration:
procedure PutInfo(var S: TStream); virtual;

Diese Methode mu das Info-Feld in den Stream schreiben.
Diese Implementation geht davon aus, da es sich tatschlich um einen
LongInt-Wert handelt.

Sie mssen die Methode berschreiben, wenn Sie hier
einen Zeiger auf irgendeine Datenstruktur abgelegt haben.

TTable.Store-Methode
 
 Deklaration:
procedure Store(var S: TStream);

Schreibt das Objekt mittels der geerbten Store-Methode in den Stream.
Dann wird PutInfo aufgerufen, um das Info-Feld
abzuspeichern.

RegisterGvTable-Prozedur  (Unit GvTable)
 
 Deklaration:
procedure RegisterGvTable;




                  gvtable, Page #   7   Date 22-7-1996 Monday
                                    -    8 -





Registriert die in GvTable definierten Objekttypen fr Stream-Operationen.
























































                  gvtable, Page #   8   Date 22-7-1996 Monday
