Beschreibung der wichtigsten Funktionen, Prozeduren
und Eigenschaften der DBR-Komponente
TTEXTGRID |
Hinweise:
Um Flackern zu unterdrücken, sollten Sie bei Parent der Komponente
DoubleBuffered
setzen:
procedure TForm1.FormCreate(Sender: TObject);
var x: integer;
begin
DoubleBuffered := true;
// <--------------
for x := 1 to 4 do
TextGrid1.cells[0, x] := char(64 + x);
for x := 1 to 4 do
TextGrid1.cells[x, 0] := inttostr(x);
TextGrid1.ColWidths[0] := 30;
TextGrid1.FixCenter := true;
end;
Wenn
die Komponente auf ein Panel gesetzt wird, dann natürlich:
Panel1.DoubleBuffered := true;
Da zur
Texteingabe ein TMemo geöffnet wird, denken Sie daran
(je nach
Position des Memo [siehe unten
EditPosition])
dafür Platz zu
lassen.
Erläuterung der wichtigsten Eigenschaften:
AutoSpread
(Boolean)
Normalerweise dürfen überlappende Zellbereich nicht miteinander
verbunden werden.
Das kann man umgehen, wenn man
AutoSpread auf
True stellt. Dann wird
aber automatisch der Verbund unter Berücksichtigung
der äußersten Selektionen verteilt.
Siehe aber unten
MergeCells!!


Es können immer
nur rechteckige Bereiche verbunden sein!
BackGround
(TTGBack)
tgOpaque =
Solider Hintergrund.
tgTransparent
= Die Zellen
(außer den
Fixed-Zellen)
werden
durchsichtig.
tgTooFixTransparent
= Alle Zellen
(auch Fixed-Zellen)
werden durchsichtig.
tgPicture
= Ist eine
Grafik geladen, wird diese als Hintergrund
dargestellt,
ansonsten ist die Wirkung wie
tgTransparent.
tgPicTransparent
= Ist eine Grafik
geladen und ist dieselbe transparent
(z.B.: *.wmf oder *.ico), wird
auch der Hintergrund an den
selben Stellen wie die Grafik transparent.
tgPicFixTransparent
= Grafik und
Fixed-Zellen werden transparent.
BorderStyle
(TTGBorder)
tgNone = Komponente
wird ohne Rand dargestellt.
tgSingle = Es
wird ein schmaler Rand um die Komponente gezeichnet.
Col
(Integer)
Liest oder
setzt die Spalte, in der sich die fokussierte Zelle befindet. Bei
Fehlern oder dem Aufruf von
Reset
wird der Wert -1.
ColCount
(Word)
Liest oder
setzt die Anzahl der Spalten. Es muss mindestens 1 Spalte vorhanden
sein.
Color
(TColor)
Bestimmt die
Hintergrundfarbe der Standard-Zellen. Hat natürlich bei transparentem
Grid keine Wirkung.
DefaultColWidth
(Byte)
Setzt alle
Spalten auf die angegebene Spaltenbreite. Waagerechte Zellverbände
werden dabei aufgelöst.
DefaultRowHeight
(Byte)
Setzt alle
Zeilen auf die angegebene Zeilenhöhe. Senkrechte Zellverbände
werden dabei aufgelöst.
DisabledColor
(TColor)
Bestimmt die Hintergrundfarbe der Standard-Zellen, wenn das Grid nicht
Enabled ist.
Hat natürlich bei transparentem Grid keine Wirkung.
Edge
(Boolean)
Bestimmt, ob die Gitterlinien auch außen herum gezeichnet werden.

Edge
= True
Edge = False
EditBackGround
(TColor)
Hintergrundfarbe des Texteingabefeldes.
EditFont
(TFont)
Schriftart und Farbe des Texteingabefeldes.
Editing
(Boolean)
Erlaubt oder verhindert, dass das Grid editiert
werden kann
(Zeilenhöhen, Texte, Zellverbände usw.).
EditPosition
(TTGEPos)
tgEditBottomLeft =
Das Eingabefeld für das Editieren eines Zellinhaltes wird
unterhalb
des Grids an der linken Kante eingeblendet.
tgEditBottomRight
=
Das Eingabefeld wird unterhalb
des Grids an der rechten Kante
eingeblendet.
tgEditTopLeft = Das
Eingabefeld erscheint oberhalb des Grids links.
tgEditTopRight =
Das
Eingabefeld erscheint oberhalb rechts.
tgEditLeftTop =
Eingabefeld links oben neben dem Grid.
tgEditLeftBottom =
Eingabefeld links unten neben dem Grid.
tgEditRightTop =
Eingabefeld rechts vom Grid oben.
tgEditRightBottom =
Eingabefeld rechts vom Grid unten.
EditShowTip
(Boolean)
Zeigt oder verbirgt unter dem Eingabefeld den Hinweies:
Bestätigen mit
Strg+Enter
EditTipColor
(TColor)
Farbe des Hinweises unter dem Eingabefeld
EditTipFontColor
(TColor)
Farbe der Schrift des Hinweises unter dem Eingabefeld
FixButtons
(Boolean)
Bestimmt, ob die Fixed-Zellen als Buttons mit der linken Maustaste
heruntergedrückt
werden können. Bei TRUE
werden dabei die
Ereignisse OnFixButtonDown
bzw.
OnFixButtonUp ausgelöst.
Different gibt
an, ob es sich um eine fremdgezeichnete Zelle handelt.
Beispiel:
procedure TForm1.TextGrid1FixButtonUp(Sender: TObject; ACol, ARow:
Integer;
Different: Boolean);
begin
if not Different then begin
//
mach was, z.B.:
showmessage(Textgrid1.Cells[ACol, Arow]);
end;
end;
FixCenter
(Boolean)
Legt fest, ob
die Beschriftung der Fixed-Zellen immer zentriert wird.

FixCenter = False
FixCenter = True
FixColor
(TColor)
Bestimmt die
Flächenfarbe der Fixed-Zellen, wenn das Grid
Enabled
ist. Hat
natürlich bei transparenten Zellen keine Wirkung.
FixDisabledColor
(TColor)
Bestimmt die
Flächenfarbe der Fixed-Zellen, wenn das Grid
not Enabled
ist. Hat
natürlich bei transparenten Zellen keine Wirkung.
FixedCols
(Byte)
Bestimmt die
Anzahl der fixierten Spalten.
FixedRows
(Byte)
Bestimmt die
Anzahl der fixierten Zeilen.
FixFlat
(Boolean)
Bestimmt ob
Fixed-Zellen flach dargestellt werden.
FixFontStyle
(TFontStyles)
Für
Fixed-Zellen wird ein abweichender
Fon.Style
eingestellt.
FocusRect
(Boolean)
Wenn diese
Eigenschaft
TRUE ist und
das Grid den Fokus erhält, wird innerhalb der
fokussierten Zelle ein gestricheltes Rechteck gezeichnet.
LineColor
(TColor)
Bestimmt die Farbe der Gitterlinien, wenn das Grid nicht
den Fokus hat.
LineFocusColor
(TColor)
Bestimmt die Farbe der Gitterlinien, wenn das Grid den Fokus besitzt.
LineWidth
(Byte)
Bestimmt die Strichbreite des Gitters.
Messages
(Boolean)
Steht diese Eigenschaft auf
TRUE,
wird bei bestimmten Fehlern
(z.B. wenn
überlappende Bereiche verbunden werden sollen)
eine Meldung
ausgegeben.
Ansonsten passiert entweder nichts, oder die Funktion wird ohne
Nachfrage ausgeführt
(z.B. beim Löschen von
Text).
NoFocusSelColor
(TColor)
Wenn die Komponente den Fokus verliert, können selektierte Zellen
andersfarbig
angezeigt werden. Um beispielsweise das Verhalten eines TStringGrid
(ohne
Hintergrundbild) nachzubilden,
können Sie
(falls die Farben noch nicht geändert wurden)
folgendes tun:
Beispiel:
procedure
TForm1.FormCreate(Sender: TObject);
begin
doublebuffered := true;
with Textgrid1 do begin
NoFocusSelColor := SelectColor;
SelectColor := Color;
Focusrect := true;
end;
end;
Picture
(TPicture)
Damit kann eine Grafik für den Hintergund geladen werden. Ist die Grafik
kleiner
als das Grid, wird das Bild wiederholt neben- und untereinander
gezeichnet.
Row
(Integer)
Liest oder
setzt die Zeile, in der sich die fokussierte Zelle befindet. Bei
Fehlern oder dem Aufruf von
Reset wird der Wert -1.
RowCount
(Word)
Liest oder
setzt die Anzahl der Zeilen. Es muss mindestens 1 Zeile vorhanden sein.
SelectColor
(TColor)
Bestimmt die Farbe der Zellen, welche selektiert sind.
SelectStyle
(TTGSelS)
tgFull
= Zelle wird ausgefüllt
tgPart
= ein kleiner Rand der Zelle bleibt frei, damit man beispielsweise ein
Teil des Hintergrundbildes noch
erkennen kann.

TextLine
(TTGMul)
tgMultiLine =
der Zelltext wird an
Leerzeichen oder Zeilenenden umgebrochen.
tgSingleLine
= mehrzeiliger Text
wird einzeilig am oberen Zellrand ausgegeben.
tgSingleVCenter
= der Text wird einzeilig vertikal zentriert ausgegeben.
tgDefault
= entspricht hier
tgSingleLine
(siehe aber weiter unten CellLine)
Alle
(außer Fixed)Zellen
werden entsprechend angepasst.

tgSingleLine
tgMultiLine
tgSingleVCenter
WheelPermit
(Boolean)
Entscheidet, ob die Komponente auf Drehen am Mausrad reagiert.
Erläuterung der wichtigsten Ereignisse:
OnDrawCell
Wird vor dem
Zeichnen jeder Zelle ausgelöst. Man kann mittels
DefaultDraw
für
bestimmte Zellen eine abweichende Darstellung erreichen.

Beispiel:
procedure
TForm1.TextGrid1DrawCell(Sender:
TObject;
ACol,
ARow:
Integer;
Rect:
TRect;
Selected:
Boolean;
var
DefaultDraw:
Boolean);
begin
if (acol
= 2)
and (arow
> 0)
then
begin
DefaultDraw
:= false;
// <--------------
with
TTextGrid(sender)
do begin
canvas.font.color
:= clred;
if
selected
then
canvas.brush.color
:= claqua
else
if
BackGround =
tgOpaque
then
canvas.brush.color
:= clyellow
else
canvas.brush.style
:= bsclear;
canvas.fillrect(Rect);
inflaterect(Rect,
-3,
-3);
if
(Rect.bottom
- Rect.top
> 0)
and
(Rect.right
- Rect.left
> 0)
then
drawtext(canvas.handle,
pchar(Textgrid1.cells[acol,
arow]),
-1,
rect,
DT_SINGLELINE or
DT_VCenter);
end;
end;
end;
OnEdited
Wird nach dem Editieren von Zellinhalten aufgerufen. Man kann unerwünschte Inhalte
abweisen.
Beispiel:
procedure TForm1.TextGrid1Edited(Sender: TObject; ACol, ARow: Integer;
var S: string);
begin
if pos('sex', LowerCase(S)) > 0 then S := 'Zensiert';
end;
OnEditing
Wird vor dem Editieren von Zellinhalten aufgerufen. Damit kann man beispielsweise
das Editieren von speziellen Zellen verhindern.
Beispiel:
procedure TForm1.TextGrid1Editing(Sender: TObject; ACol, ARow: Integer;
var EditType: TTGEd; var Edit: TCustomEdit);
begin
if (ACol = 3) and (ARow = 2) then
EditType := tgNo;
end;
Außerdem kann bestimmt werden, dass die Zellen ihren Text aus
fremden Eingabefeldern übernehmen.
Beispiel:
procedure TForm1.TextGrid1Editing(Sender: TObject; ACol, ARow: Integer;
var EditType: TTGEd; var Edit: TCustomEdit);
begin
EditType := tgStrange;
Edit := Richedit1;
end;
Standardmäßig steht EditType auf tgSelf und Edit ist nil. Damit wird für
das Editieren von Zelltexten das eigene Memo der Komponente geöffnet.
OnWheel
Wird ausgelöst, wenn am Mausrad gedreht wird (und WheelPermit auf True steht).
Damit kann man beispielsweise bestimmte Bereiche ausgrenzen. Hier ein Codeschnipsel,
bei dem über das Mausrad nicht die Spalte 1 erreicht werden kann:
Beispiel:
procedure TForm1.TextGrid1Wheel(Sender: TObject; Direction: TTGDirection;
ACol, ARow: Integer; var Handled: Boolean);
begin
if (Direction = tgLeftWards)
and (ACol < 3) then Handled := true;
end;
OnWheel arbeitet unabhängig von OnChgDirection!
OnChgDirection
Wird ausgelöst, wenn man die Kursortasten betätigt.
Beispiel:
procedure TForm1.TextGrid1ChgDirection(Sender: TObject;
Direction: TTGDirection; ACol, ARow: Integer; var Handled: Boolean);
begin
if (Direction = tgRightWards)
and (ACol >= 5) then Handled := true
else
if (Direction = tgUpWards)
and (ARow <= 2) then Handled := true
end;
OnChgDirection arbeitet unabhängig von OnWheel!
OnFixButtonDown, OnFixButtonUp siehe oben --> FixButtons
Erläuterung der wichtigsten Funktionen, Prozeduren u. Eigenschafte
zur Laufzeit:
MergeCells(x1,
y1, x2, y2: word)
Verbindet den
angegebenen Zellbereich unter der Voraussetzung, dass
im Bereich keine fremdgezeichneten Zellen sind
(siehe oben
OnDrawCell),
dass Zellen nicht zu anderen Verbundbereichen gehören
(außer bei
AutoSpread;
siehe oben) und dass keine
ausgeblendeten oder fixe Zellen im Bereich liegen. Steht
AutoSpread
auf TRUE,
dann werden überlappende Bereiche ohne Nachfrage aufgelöst!! Man
muss
also immer den kompletten Bereich angeben, den man verbinden will.
Es können
immer nur rechteckige Bereiche verbunden sein!
SeparateCells(x,
y: word)
Löst die Verbindung von Zellbereichen wieder auf. Dabei
müssen die
angegebenen
Koordinaten eine Zelle des Verbundes kennzeichnen
(egal welche).
SeparateAll
Alle Zellverbände werden aufgelöst.
SelCount
(Cardinal)
Gibt die Anzahl der selektieren Zellen zurück.
DifferentCount
(Cardinal)
Gibt die Anzahl
der fremdgezeichneten Zellen zurück
(siehe oben
OnDrawCell).
ColWidths[x:
word] (Word)
Setzt oder liest die Breite für eine bestimmte Spalte. Zum Ausblenden
einer
Spalte setzt man X auf Null.
RowHeights[y:
word]
(Word)
Setzt oder liest die Breite für eine bestimmte Zeile. Zum Ausblenden
einer
Zeile setzet man Y auf Null.
ColWidthsX(x1,
x2, degree: word)
Setzt die
Breite für mehrere zusammenhängende Spalten
(x1 bis einschl. x2).
RowHeightsX(y1,
y2, degree: word)
Setzt die Höhe
für mehrere zusammenhängende Zeilen
(y1 bis einschl. y2).
FontColor[x, y:
Word] (Integer)
Setzt eine
abweichende Schriftfarbe für eine bestimmte Zelle, bzw. gibt die
Schriftfarbe einer Zelle zurück. Setzt man die Eigenschaft auf
MAXINT,
wird die
spezielle Farbe wieder gelöscht und die Schriftfarbe der Zelle auf Standardfarbe
gesetzt
(Font.Color).
Cells[x,
y: Word]
(String)
Setzt und liest
den Text einer bestimmten Zelle.
CellLine[x,
y: Word]
(TTGMUL)
Entspricht bei der Ausrichtung dem obigen
Textline, setzt und liest aber
nur den Wert einer einzigen Zelle. Wird der Wert
tgDefault übergeben,
erhält
die Zelle den Wert vom standardmäßigen TextLine.
Alignments[x:
word]
(TTGAlig)
Setzt oder liest die Textausrichtung einer Spalte.
tgLeft
= linksbündig
tgCenter
= zentriert
tgRight
= rechtsbündig
tgOuter
=
Beim Lesen:
Die
angegebene Spalte liegt außerhalb des Grids oder ist
eine Fixed-Spalte.
Beim Schreiben:
tgOuter
enspricht hier
tgLeft
AlignmentToStr(alg:
TTGAlig)
Setzt die
Spaltenausrichtung zu Strings um.
Beispiel:
procedure
TForm1.Button1Click(Sender:
TObject);
begin
with TextGrid1
do
ShowMessage(AlignmentToStr(Alignments[2]));
end;
DeleteCols(x1, x2:
word)
Löscht eine oder mehrere zusammenhängende Spalten
(x1 bis
einschl. x2).
Es muss mindestens 1 Spalte übrigbleiben.
DeleteRows(y1, y2:
word)
Löscht eine oder mehrere zusammenhängende Zeilen
(y1 bis
einschl. y2).
Es muss mindestens 1 Zeile übrigbleiben.
SaveBasicsToStream(st:
TStream)
Speichert essentielle Grid-Daten in einen Stream
(Spalten- und
Zeilenzahl, Spaltenbreiten und Zeilenhöhen, Zellverbände, spezielle
Schriftfarben,
Selektionen, Zelltexte und deren Anordnung).
LoadBasicsFromStream(st:
TStream)
Liest die Daten aus einen Stream, der mit
SaveBasicsToStream
erzeugt
wurde. Ist nicht kompatibel mit
LoadFromStream.
SaveToStream(st:
TStream)
Sichert die Daten von
SaveBasicsToStream
und
weitere wichtige Grid-Daten in
einen Stream
(z.B. alle
Farben, die Schriftart, Rand, Hint usw.).
Standardeigenschaften wie Left, Top, Showhint, Tag etc. werden nicht
berücksichtigt.
LoadFromStream(st:
TStream)
Liest die Daten aus einen Stream, der mit
SaveToStream
erzeugt
wurde.
Ist nicht kompatibel mit
LoadBasicsFromStream.
Reset
Löscht die
Selection und setzt Col und Row auf -1.
Inside(x,
y: Integer)
Hiermit kann man feststellen, ob sich eine Zelle mit den angegebenen
Koordinaten innerhal eines Zellverbandes befindet.
Beispiel:
procedure
TForm1.Button1Click(Sender: TObject);
begin
if Textgrid1.Inside(3,
4) then
showmessage('Innerhalb')
else showmessage('Außerhalb');
end;
ClearText
Löscht
alle Zell-Inhalte.
MouseToCell(x,
y: integer; Rahmen: boolean; out ACol, ARow: integer)
Ermittelt anhand der Mauskoordinaten, über
welcher Zelle sich der Mauspfeil
befindet. Ist Rahmen = TRUE,
wird der rechte und untere Rahmen mit zur Zelle
gezählt. Ansonsten wird -1
zurückgegeben, wenn sich der Mauspfeil auf einem
Strich befindet.
Erläuterung der manuellen Handhabung:
Wenn
eine einzelne Zelle markiert ist und man drückt ENTER
(und das Grid hat den Focus)
oder man klickt doppelt auf eine Zelle,
öffnet sich ein TMemo zur Texteingabe. Die Eingabe muss mit der
Tastenkombination Strg+Enter bestätigt werden. Man kann aber auch
ersatzweise mit
der linken Maustaste auf die markierte Zelle im Grid oder auf den
Hinweis "Bestätigen mit
Strg+Enter" klicken.
Es ist aber
auch möglich, Text aus externen Eingabefeldern zu übernehmen
(siehe oben
OnEditing).
Sind
Zellen (welche
Text enthalten) markiert und man drückt ENTF
(und das Grid hat den
Focus), wird
der Text der Zellen gelöscht.
Mit
den Kursortasten kann man von Zelle zu Zelle springen.
Wenn
man mit gedrücktgehaltener linken Maustaste das Grid
überstreicht, werden Zellbereiche markiert.
Drückt
man auf einer Zelle die rechte Maustaste, erscheint ein
Kontextmenü, über welches man Zelltexte editieren, Bereiche verbinden
oder wieder separieren kann.
Bedingung:
Editing ist auf
TRUE
eingestellt.
Die
Taste ESC (bei
Grid-Focus)
löscht Selektionen, bzw. bricht den Editiermodus ab.
Die
Taste Pos1 fokussiert die links liegende Zelle innerhalb der aktuellen
Zeile.
Strg+Pos1 fokussiert die links oben liegende Zelle.
Die
Taste Ende fokussiert die rechts liegende Zelle innerhalb der aktuellen
Zeile. Strg+Ende fokussiert die rechts unten liegende Zelle.
Wenn
man am Mausrad dreht, wird der Zellfokus nach oben oder unten
verschoben. Hält man dabei die Strg-Taste gedrückt, erfolgt die
Verschiebung nach links und rechts. Mittels eines Klicks mit der
mittleren Maustaste
(Mausrad)
wird die waagerechte Richtung mit der senkrechten vertauscht. Sind
Mehrere Zellen markliert, wird diese Markierung aufgehoben. Achten Sie
bitte darauf, dass dieser Mausrad-Klick über dem Grid und nicht daneben
ausgeführt wird.
Hält
man die ALT-Taste gedrückt, kann man Zellinhalte mit der linken
Maustaste verschieben. Hält man zusätzlich die STRG-Taste gedrückt, wird
der Zellinhalt in
die Zielzelle kopiert.
Bedingung:
Editing ist auf
TRUE
eingestellt.
Anwendungsbeispiele:
Beispiel 1:
Der
folgende Code lässt Spalten durch Ein- und Ausblenden scheinbar
scrollen.
Von 15 Spalten sind immer nur 5 sichtbar. Bedingung ist, dass es eine
einzige
fixe Spalte gibt, alle anderen Spalten die gleiche Breite
haben und keine
Zellverbände existieren.
const
Fix = 1; // Bedingung
var
SpaltenZahl: word = 15 + Fix;
AnzahlSichtbar: word = 5;
ScrollLinks: boolean = true;
SpalteLinks: word = Fix;
procedure TForm1.FormCreate(Sender: TObject);
var x: integer;
begin
DoubleBuffered := true;
//------ Werte zum Testen ---------
with TextGrid1 do begin
DefaultColWidth := 50;
ColCount := SpaltenZahl;
FixedCols := Fix;
FixedRows := 1;
for x := 1 to RowCount - 1 do
cells[0, x] := char(64 + x);
for x := 1 to ColCount - 1 do
Cells[x, 0] := inttostr(x);
FixCenter := true;
Colwidths[0] := 30;
ColwidthsX(1, ColCount - 1, DefaultColwidth);
end;
//---------------------------------
Anzeige;
end;
procedure TForm1.Anzeige;
var i: integer;
begin
with TextGrid1 do begin
if AnzahlSichtbar >= ColCount - Fix then
AnzahlSichtbar := ColCount - Fix - 1 else
if AnzahlSichtbar < 1 then AnzahlSichtbar := 1;
if SpalteLinks < Fix then begin
SpalteLinks := Fix;
beep;
end else begin
if SpalteLinks > ColCount - AnzahlSichtbar
then begin
SpalteLinks := ColCount - AnzahlSichtbar;
beep;
end;
end;
i := SpalteLinks;
if SpalteLinks > Fix then begin
if i + AnzahlSichtbar > colcount - 1 then
i := ColCount - AnzahlSichtbar;
ColwidthsX(Fix, i + Fix - 2 + ord(Fix = 0), 0);
end;
i := i + AnzahlSichtbar;
if ScrollLinks then
ColwidthsX(i - 1, i - 1, DefaultColWidth) else
ColwidthsX(SpalteLinks, SpalteLinks, DefaultColWidth);
if i < colcount then
ColwidthsX(i, ColCount - 1, 0);
end;
end;
// Spalten nach links verschieben
procedure TForm1.SpeedButton1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ScrollLinks := true;
inc(SpalteLinks);
Anzeige;
end;
// Spalten nach rechts verschieben
procedure TForm1.SpeedButton2MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ScrollLinks := false;
dec(SpalteLinks);
Anzeige;
end;
//-------------------------------------------------------
Beispiel 2:
Um das Grid scrollen zu können, setzt man es in eine Scrollbox. Es
werden dann aber im Gegensatz zum Stringgrid auch die fixen Zellen
weggescrollt. Man kann dann leider keine Transparenz nutzen und
sollte zur Texteingabe ein externes Feld einrichten
(siehe oben OnEditing).
var
sb: TScrollBox;
procedure TForm1.FormCreate(Sender: TObject);
var
x: integer;
begin
//------ Werte zum Testen ---------
with TextGrid1 do begin
DefaultColWidth := 50;
ColCount := 20;
FixedCols := 1;
FixedRows := 1;
Rowcount := 15;
for x := 1 to RowCount - 1 do
cells[0, x] := chr(x + 64);
for x := 1 to ColCount - 1 do
Cells[x, 0] := inttostr(x);
background := tgPicture;
picture.loadfromfile('c:\test.bmp');
EditPosition := tgEditRightTop;
end;
//---------------------------------
sb := TScrollBox.create(self);
sb.left := TextGrid1.left;
sb.top := TextGrid1.top;
sb.width := 400;
sb.height := 200;
sb.parent := self;
TextGrid1.top := 0;
TextGrid1.left := 0;
Textgrid1.parent := sb;
sb.DoubleBuffered := true;
end;
|