Inhaltsverzeichnis

TDrawGrid — Raster, das der Aufrufer zeichnet

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


Vererbung

Kette: TComponentTControlTStringGridTDrawGrid

Direkte Nachfahren: keine — diese Klasse wird nicht weiter abgeleitet.

Quelle: vega/grids.lyx


Verwendung

var g: TDrawGrid := new TDrawGrid();
g.SetBounds(8, 8, 400, 200);
g.SetColCount(4);
g.SetRowCount(20);
g.OnDrawCell := ZelleZeichnen;
g.SetParent(f);


Besonderheiten


Eigenschaften

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

Methoden

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

Ereignisse

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.