Ein TStringGrid, das seine Zellen nicht selbst füllt: DefaultDrawing steht auf false, und jede Zelle geht durch den eigenen Zeichen-Handler. Für alles, was kein Text ist — Farbfelder, Symbole, Balken, gemischte Darstellungen.
Unit: vega.grids · Basis: TStringGrid
→ Alle Steuerelemente · Klassenbaum · Guide: Komponenten
Kette: TComponent → TControl → TStringGrid → TDrawGrid
Direkte Nachfahren: keine — diese Klasse wird nicht weiter abgeleitet.
Quelle: vega/grids.lyx
var g: TDrawGrid := new TDrawGrid();
g.SetBounds(8, 8, 400, 200);
g.SetColCount(4);
g.SetRowCount(20);
g.OnDrawCell := ZelleZeichnen;
g.SetParent(f);
DefaultDrawing = false. Alles andere — Spalten, Zeilen, Auswahl, feste Bereiche, Rollen — steht bei TStringGrid.DefaultDrawing und färbt im Handler nach.Alle Eigenschaften, auch die geerbten.
| Name | Typ | Bedeutung | Herkunft |
|---|---|---|---|
ComponentState | int64 | Zustand als Bitmaske (csLoading, csDestroying …) | TComponent |
ComponentStyle | int64 | Stil als Bitmaske; Vorgabe csInheritable | TComponent |
Name | pchar | Name der Komponente — für FindComponent und beim Laden aus LFM | TComponent |
OwnedComponents | TObjectList | Die Komponenten, die DIESER gehoeren. Delphis Components[]. Zeigerliste, keine Kopien: TObjectList hält int64-Adressen | TComponent |
Owner | TComponent | Wer diese Komponente wegraeumt. Nicht der Elternteil im Zeichenbaum — das ist bei TControl `Parent` | TComponent |
Tag | int64 | Freier Wert für eigene Zwecke; die Bibliothek fasst ihn nicht an | TComponent |
CancelSelect | bool | Im Handler setzen, um die Auswahl zu verhindern | TStringGrid |
Cells | TStringList | Zellinhalte, flach: row * ColCount + col | TStringGrid |
ChangedIndex | int64 | Betroffene Spalte bzw. Zeile der letzten Änderung | TStringGrid |
ChangedIndex2 | int64 | Zweiter Index der letzten Änderung | TStringGrid |
ChangedIsRow | bool | Ob die letzte Änderung eine Zeile betraf | TStringGrid |
ClickedCol | int64 | Zuletzt angeklickte Spalte | TStringGrid |
Col | int64 | Auswahl (nicht in den festen Bereichen) | TStringGrid |
ColCount | int64 | Zahl der Spalten | TStringGrid |
ColWidths | TIntArray | Auf dem Heap statt als `[64]int64`: ein Inline-Array in einer Ableitung von TControl ragt in dessen Children-Array hinein (#1630). Hier fiel es nie auf, weil ein Grid in der Regel keine … | TStringGrid |
DefaultColWidth | int64 | Vorgabebreite neuer Spalten | TStringGrid |
DefaultDrawing | bool | Zeichnet das Gitter den Zellinhalt selbst? Delphis DefaultDrawing. Bei false bleiben Hintergrund, Auswahl und Netz stehen, der INHALT aber leer — dafuer ist dann OnDrawCell da. Das ist … | TStringGrid |
DrawCol | int64 | Welche Zelle gerade gezeichnet wird — der Handler bekommt sie über diese Felder, weil Lyx keine Ereignisdaten-Objekte kennt | TStringGrid |
DrawRect | TRect | Rechteck der Zelle, die gerade gezeichnet wird | TStringGrid |
DrawRow | int64 | Zeile, die gerade gezeichnet wird — nur im Zeichen-Handler gültig | TStringGrid |
Editable | bool | Darf der Nutzer Zellen ändern? Delphis goEditing. Aus, weil ein Gitter oft nur anzeigt und eine versehentliche Änderung dort teurer wäre als ein zusätzlicher Schalter | TStringGrid |
EditorMode | bool | Wird gerade getippt? Der Inhalt steht dann in _editBuf und noch nicht in der Zelle — Escape verwirft ihn, Eingabe übernimmt ihn | TStringGrid |
FixedCols | int64 | Zahl der festen Spalten links | TStringGrid |
FixedRows | int64 | Zahl der festen Zeilen oben | TStringGrid |
GridLines | bool | Gitterlinien zeichnen | TStringGrid |
KeyNavigation | bool | Darf die Auswahl mit den Pfeiltasten wandern? | TStringGrid |
LeftCol | int64 | Erste sichtbare Spalte | TStringGrid |
Modified | bool | Hat der Nutzer seit dem letzten Zuruecksetzen etwas geaendert? Wie bei TEdit zählt Programmcode nicht mit | TStringGrid |
Row | int64 | Aktuelle Zeile | TStringGrid |
RowCount | int64 | Zahl der Zeilen | TStringGrid |
RowHeight | int64 | Einheitliche Zeilenhoehe. Delphi kennt zusätzlich RowHeights je Zeile — die stehen in _rowHeights; 0 heißt „diese Vorgabe“ | TStringGrid |
RowSelect | bool | Was der Nutzer im Gitter darf. In Delphi eine Menge von Optionen; hier einzelne Schalter — eine Bitmaske wäre kuerzer, aber man muesste sie beim Lesen jedes Mal aufloesen | TStringGrid |
ShowHeader | bool | Zeigt das Gitter seine feste Kopfzeile hervorgehoben? | TStringGrid |
TopRow | int64 | Erste sichtbare bewegliche Zeile/Spalte | TStringGrid |
Alle Methoden, auch die geerbten.
| Signatur | Zweck | Herkunft |
|---|---|---|
ClearState(bits: int64): void | Zustandsbits löschen | TComponent |
ComponentCount(): int64 | Anzahl der eigenen Komponenten | TComponent |
ComponentIndex(): int64 | Delphis ComponentIndex: der eigene Platz in der Liste des Besitzers | TComponent |
Components(index: int64): TComponent | Eigene Komponente an dieser Stelle | TComponent |
Destroy(): void | Raeumt die eigene Liste ab, aber NICHT die Einträge — welche Komponenten ihre Besitztuemer mitnehmen, entscheidet die Ableitung über DestroyComponents() | TComponent |
DestroyComponents(): void | Baut die Besitztuemer ab. Von hinten, weil jedes Destroy() sich selbst aus der Liste austraegt | TComponent |
FindComponent(name: pchar): TComponent | Sucht unter den EIGENEN Komponenten, eine Ebene tief — wie in Delphi | TComponent |
GetName(): pchar | Namen lesen | TComponent |
GetNamePath(): pchar | Der eigene Name. Delphi hängt bei Unterkomponenten den des Besitzers davor; Vega hat keine, also ist es der Name selbst | TComponent |
GetTag(): int64 | Tag lesen | TComponent |
HasState(bits: int64): bool | Sind diese Zustandsbits gesetzt | TComponent |
InitComponent(): void | Kein Konstruktor: lyxc vererbt Konstruktoren nicht, jede Ableitung ruft InitComponent() im eigenen Create() | TComponent |
InsertComponent(c: TComponent): void | Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab | TComponent |
RemoveComponent(c: TComponent): void | Komponente aus dem Besitz nehmen | TComponent |
SetName(v: pchar): void | Setzt Name | TComponent |
SetState(bits: int64): void | Zustand setzen | TComponent |
SetTag(v: int64): void | Setzt Tag | TComponent |
AutoSizeColumn(col: int64): void | Spaltenbreite an den laengsten Text anpassen — Delphis AutoSizeColumn. Der Innenabstand entspricht dem beim Zeichnen | TStringGrid |
AutoSizeColumns(): void | Passt alle Spaltenbreiten an den Inhalt an | TStringGrid |
CellIndex(col: int64, row: int64): int64 | Interner Index einer Zelle | TStringGrid |
ClampSelection(): void | Auswahl in gültige Grenzen bringen | TStringGrid |
Clean(mitFesten: bool): void | Alle Zellen eines Bereichs leeren — Delphis Clean. Die festen Zeilen und Spalten bleiben stehen, wenn nur der Inhalt gemeint ist | TStringGrid |
ColAtX(x: int64): int64 | Spalte an einer x-Position | TStringGrid |
ColLeft(col: int64): int64 | Linke Kante einer Spalte in Pixeln, oder -1 wenn nicht sichtbar | TStringGrid |
ColWidth(col: int64): int64 | Spaltenbreite lesen | TStringGrid |
ColsTo(col: int64, dst: TStringList): void | Eine ganze Spalte bzw. Zeile in eine Liste — Delphis Cols[] und Rows[]. Kopiert, statt eine lebende Sicht zu liefern: der Inhalt liegt flach, eine Sicht muesste mitgefuehrt werden | TStringGrid |
Create(): void | Anlegen; new TDrawGrid() | TStringGrid |
DeleteCol(index: int64): void | Entfernt Spalte index | TStringGrid |
DeleteRow(index: int64): void | Zeile an dieser Stelle entfernen | TStringGrid |
Destroy(): void | Gibt eigene Ressourcen frei | TStringGrid |
EditText(): pchar | Der Text, der gerade bearbeitet wird | TStringGrid |
ExchangeCols(a: int64, b: int64): void | Tauscht zwei Spalten | TStringGrid |
ExchangeRows(a: int64, b: int64): void | Zwei Zeilen bzw. Spalten tauschen — Delphis ExchangeColRow | TStringGrid |
FixedHeight(): int64 | Höhe des festen Kopfes. Mit eigenen Zeilenhoehen ist das keine Multiplikation mehr, sondern eine Summe | TStringGrid |
FixedWidth(): int64 | Breite aller festen Spalten — sie stehen links und scrollen nicht | TStringGrid |
GetCell(col: int64, row: int64): pchar | Zelleninhalt lesen | TStringGrid |
GetObject(col: int64, row: int64): int64 | Delphis Objects: eine Zahl je Zelle, die die Anwendung fuellt | TStringGrid |
InitGrid(): void | Kein Konstruktor für die Ableitung: Lyx vererbt Create nicht, deshalb steht der Rumpf hier und TDrawGrid.Create ruft ihn | TStringGrid |
InsertCol(index: int64): void | Eine Spalte einfuegen. Teurer als eine Zeile, weil die Zellen flach liegen: es wird in jeder Zeile eine Stelle eingeschoben | TStringGrid |
InsertRow(index: int64): void | Eine Zeile einfuegen. Delphis InsertColRow, auf Zeilen beschraenkt — Spalten wandern in einem Gitter selten, und jede Spaltenoperation muesste zusätzlich die Breiten verschieben | TStringGrid |
LoadFromCSVFile(pfad: pchar): bool | Datei lesen und das Gitter darauf einstellen. Zeilen- und Spaltenzahl ergeben sich aus dem Inhalt; die feste Kopfzeile bleibt, wie sie eingestellt ist | TStringGrid |
MoveCol(von: int64, nach: int64): void | Verschiebt eine Spalte von von nach nach | TStringGrid |
MoveRow(von: int64, nach: int64): void | Eine Zeile an eine andere Stelle schieben — Delphis MoveColRow | TStringGrid |
OnColRowExchangedRef(): TNotifyEvent | Lyx hat keine Ereignisfelder ohne Namen — dieser Umweg hält ExchangeRows/ExchangeCols bei OnColRowMoved, statt ein zweites Feld einzufuehren, das dasselbe meldet | TStringGrid |
RowAtY(y: int64): int64 | Zeile an einer y-Position | TStringGrid |
RowHeights(row: int64): int64 | Höhe einer Zeile. 0 im Feld heißt „die gemeinsame Vorgabe“ — so bleibt ein Gitter ohne eigene Höhen genau so schnell wie vorher. Der Wachhund auf _rowHeights ist Pflicht: Konstruktoren … | TStringGrid |
RowTop(row: int64): int64 | Obere Kante einer Zeile, oder -1 wenn nicht sichtbar | TStringGrid |
RowsTo(row: int64, dst: TStringList): void | Schreibt Zeile row nach dst | TStringGrid |
SaveToCSVFile(pfad: pchar): bool | Schreibt das Gitter als CSV-Datei | TStringGrid |
ScrollToCell(): void | Auswahl sichtbar machen | TStringGrid |
SetCell(col: int64, row: int64, s: pchar): void | Zeichen an diese Stelle setzen | TStringGrid |
SetColFrom(col: int64, src: TStringList): void | Füllt Spalte col aus src | TStringGrid |
SetColWidth(col: int64, w: int64): void | Spaltenbreite setzen | TStringGrid |
SetEditText(s: pchar): void | Setzt den Text der laufenden Bearbeitung | TStringGrid |
SetObject(col: int64, row: int64, v: int64): void | Hängt einen Wert an die Zelle (col,row) | TStringGrid |
SetRowFrom(row: int64, src: TStringList): void | Füllt Zeile row aus src | TStringGrid |
SetRowHeights(row: int64, h: int64): void | Setzt die Höhe von Zeile row | TStringGrid |
SetSelection(col: int64, row: int64): void | Auswahl auf start mit laenge setzen | TStringGrid |
SetSize(cols: int64, rows: int64): void | Zeilen und Spalten festlegen. Vorhandene Inhalte gehen dabei verloren — das Umsortieren einer flachen Liste bei geaenderter Spaltenzahl wäre mehr Aufwand als es wert ist; wer Inhalte … | TStringGrid |
SortByColumn(col: int64, aufsteigend: bool): void | Nach einer Spalte sortieren. Die festen Zeilen bleiben oben stehen — sie sind Überschriften und gehoeren nicht in die Ordnung | TStringGrid |
VisibleRows(): int64 | Wie viele Zeilen unter den Kopf passen — ab der ersten sichtbaren | TStringGrid |
Create(): void | Anlegen; new TDrawGrid() | eigen |
| Name | Typ | Wann | Herkunft |
|---|---|---|---|
OnColRowDeleted | TNotifyEvent | Eine Spalte oder Zeile wurde gelöscht | TStringGrid |
OnColRowInserted | TNotifyEvent | Zeilen und Spalten kamen dazu, gingen weg oder haben den Platz getauscht. Welche es waren, steht in ChangedIndex/ChangedIndex2, und ob es Zeilen oder Spalten waren, in ChangedIsRow | TStringGrid |
OnColRowMoved | TNotifyEvent | Eine Spalte oder Zeile wurde verschoben | TStringGrid |
OnDrawCell | TDrawCellEvent | Eine Zelle selbst zeichnen. Ist der Handler gesetzt, malt das Gitter Hintergrund und Rahmen und überlaesst den Inhalt der Anwendung — das ist der Unterschied zwischen TStringGrid und … | TStringGrid |
OnHeaderClick | TNotifyEvent | Klick auf eine feste Zeile (Überschrift). Die Spalte steht in ClickedCol | TStringGrid |
OnSelectCell | TNotifyEvent | Eine Zelle wurde ausgewählt | TStringGrid |
OnSelectingCell | TNotifyEvent | Vor dem Wechsel der Auswahl. Setzt der Handler CancelSelect auf true, bleibt sie stehen — der Weg für „erst speichern“ | TStringGrid |
OnSetEditText | TNotifyEvent | Nach dem Bearbeiten einer Zelle | TStringGrid |
Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus vega/grids.lyx im Repo lyx-vcl.