Ein TRichEdit, das seinen Inhalt nach einer Sprachdefinition einfärbt: Schlüsselwörter, Zeichenketten, Zahlen und Kommentare. Gedacht für Quelltext in Werkzeugen und Editoren.
Unit: vega.syntaxedit · Basis: TRichEdit
→ Alle Steuerelemente · Klassenbaum · Guide: Komponenten
Kette: TComponent → TControl → TCustomEdit → TMemo → TRichEdit → TSyntaxEdit
Direkte Nachfahren: keine — diese Klasse wird nicht weiter abgeleitet.
Quelle: vega/syntaxedit.lyx
var se: TSyntaxEdit := new TSyntaxEdit();
se.SetBounds(8, 8, 500, 300);
se.SetParent(f);
se.SetSyntax(SyntaxLyx()); // eingebaute Sprachdefinition
se.SetText(quelltext);
Ohne Sprachdefinition (Syntax = 0) verhält sich das Feld wie ein TRichEdit ohne Läufe.
OwnsSyntax regelt, wer die Sprachdefinition freigibt. Wer sie über SetSyntax anhängt, behält sie; wer eine der eingebauten nimmt, übergibt sie an das Feld.Colors hält die Farbzuordnung je Kategorie — sie lässt sich einzeln umstellen, ohne die Sprachdefinition anzufassen.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 |
AutoSelect | bool | Beim Hineinspringen alles auswaehlen — so ersetzt die nächste Eingabe den alten Inhalt | TCustomEdit |
Backend | IVegaBackend | Die Zwischenablage laeuft über vega.clipbrd, nicht mehr über einen eigenen Backend-Verweis: die eine Ablage des Prozesses bekommt ihr Backend von TApplication.Init, und zwar BEVOR … | TCustomEdit |
CaretPos | int64 | Byteposition der Schreibmarke | TCustomEdit |
CaretVisible | bool | Blinkt die Marke gerade sichtbar? Die Zeitsteuerung macht TApplication über einen Timer, der CaretVisible umschaltet | TCustomEdit |
CharCase | int64 | Gross-/Kleinschreibung erzwingen, siehe TEditCharCase | TCustomEdit |
HideSelection | bool | Auswahl auch dann zeigen, wenn das Feld den Fokus verloren hat? Delphi-Vorgabe: nein | TCustomEdit |
MaxLength | int64 | Liest MaxLength | TCustomEdit |
Modified | bool | Hat der NUTZER seit dem letzten Zuruecksetzen etwas geaendert? Ein SetText aus dem Programm zählt nicht — sonst wäre die Frage „muss gespeichert werden?“ nach jedem Laden mit ja beantwortet | TCustomEdit |
NumbersOnly | bool | Nur Ziffern annehmen. Delphis NumbersOnly: gefiltert wird die EINGABE, nicht SetText — ein Programm darf weiter schreiben, was es will, sonst kann es einen Fehlwert nicht mehr anzeigen | TCustomEdit |
ReadOnly | bool | Nur lesen, keine Eingabe | TCustomEdit |
ScrollX | int64 | Waagerechte Verschiebung in Pixeln, damit die Marke sichtbar bleibt | TCustomEdit |
SelStart | int64 | Ankerpunkt der Auswahl; gleich CaretPos heißt „nichts ausgewählt“ | TCustomEdit |
Text | TTextBuffer | [[lyx_-_programmiersprache:vega:controls:tcustomedit|TCustomEdit | |
TextHint | pchar | Graue Andeutung im leeren Feld („Suchbegriff…“). Wird nicht ausgewählt, nicht kopiert und nicht mitgezaehlt — sie ist kein Text, sondern eine Beschriftung, die im Feld sitzt | TCustomEdit |
UndoBuffer | TTextBuffer | Ein Schritt zurück. Delphi merkt sich genau einen Stand; ein zweites Undo stellt den Zustand davor wieder her (also Redo). Mehr Stufen wären eine eigene Verwaltung — die kommt mit … | TCustomEdit |
UndoCaret | int64 | Position der Schreibmarke im Rückgängig-Puffer | TCustomEdit |
UndoValid | bool | Ob der Rückgängig-Puffer belegt ist | TCustomEdit |
WantReturns | bool | Nimmt das Feld Eingabe- und Tabtaste selbst an? Nur mehrzeilige Felder werten das aus; die Felder stehen trotzdem HIER, weil jede Ableitung über InitEdit hochkommt und TMemo.Create nicht … | TCustomEdit |
WantTabs | bool | Tabulator geht ins Feld statt zum nächsten Element | TCustomEdit |
Alignment | int64 | Ausrichtung der Zeilen — Delphis Alignment am mehrzeiligen Feld. Sie gilt für ALLE Zeilen; Delphis Paragraph.Alignment je Absatz gibt es hier nicht, weil ein Absatzverzeichnis beim … | TMemo |
TopLine | int64 | Erste sichtbare Zeile (senkrechtes Scrollen) | TMemo |
DefColor | TColor | Womit neu getippter Text ausgezeichnet wird — Delphis DefAttributes | TRichEdit |
DefStyle | int64 | Schnitt für neu getippten Text | TRichEdit |
PlainText | bool | Nur Text, keine Auszeichnungen. Wie in Delphi: gesetzt, verhaelt sich das Feld wie ein TMemo, und die Laeufe bleiben unbeachtet | TRichEdit |
Runs | TObjectList | Die Laeufe, nach Start sortiert und überlappungsfrei | TRichEdit |
AutoHighlight | bool | Nach jeder Änderung neu einfaerben. Aus, wenn ein Programm den Text in vielen Schritten aufbaut und erst am Ende faerben will | eigen |
AutoIndent | bool | Bei Zeilenumbruch die Einrueckung der Vorzeile übernehmen | eigen |
BracketColor | TColor | Farbe für zusammengehörende Klammern | eigen |
Colors | TSyntaxColors | Farbe an dieser Stelle | eigen |
CurrentLineColor | TColor | Hintergrund der Zeile mit der Schreibmarke | eigen |
GutterColor | TColor | Farbe des Randstreifens | eigen |
HighlightCurrentLine | bool | Die Zeile mit der Schreibmarke hinterlegen. Hilft beim Wiederfinden der Stelle, wenn der Blick zwischen Fenstern gewandert ist | eigen |
LineNumberColor | TColor | Farbe der Zeilennummern | eigen |
MatchBrackets | bool | Zusammengehoerende Klammern hervorheben, sobald die Marke an einer steht | eigen |
OwnsSyntax | bool | Gehoert die Sprache diesem Feld? Wer sie über SetSyntax anhaengt, behaelt sie; wer eine der eingebauten nimmt, übergibt sie | eigen |
ShowLineNumbers | bool | Zeilennummern im Streifen links | eigen |
Syntax | TSyntaxDef | Die Sprache. 0 heißt: nichts einfaerben, dann verhaelt sich das Feld wie ein TRichEdit ohne Laeufe | eigen |
TabWidth | int64 | Wie viele Leerzeichen eine Tabulatortaste einfuegt. WantTabs selbst steht seit dem Nachziehen an TMemo — die Taste bleibt im Feld, statt zum nächsten Control zu springen. Der Unterschied … | eigen |
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 |
ApplyCharCase(cp: int64): int64 | Ein Zeichen durch die Schreibweisenregel schicken. Nur ASCII — Umlaute richtig zu behandeln braucht eine Tabelle, und die gehört nicht in ein Eingabefeld | TCustomEdit |
Backspace(): void | Auch Loeschen ist eine Änderung durch den Nutzer — aber erst NACH der ReadOnly-Pruefung, sonst gilt ein Feld als geaendert, in dem gar nichts passieren konnte | TCustomEdit |
CanUndo(): bool | Ob ein Rückgängig möglich ist | TCustomEdit |
Changed(): void | Änderung melden | TCustomEdit |
Clear(): void | Auswahl von Hand setzen, wie SelStart/SelLength in Delphi. Feld leeren. In Delphi an TCustomEdit, deshalb hier und nicht in TEdit — TMemo braucht dasselbe | TCustomEdit |
ClearSelection(): void | Auswahl aufheben | TCustomEdit |
ClearUndo(): void | Verwirft den Rückgängig-Puffer | TCustomEdit |
CopyToClipboard(): bool | Ausgewaehlten Text kopieren. Ohne Auswahl passiert nichts — wie überall | TCustomEdit |
CutToClipboard(): bool | Ausschneiden | TCustomEdit |
DeleteForward(): void | Zeichen rechts löschen | TCustomEdit |
DeleteSelection(): bool | Ausgewaehlten Text löschen. Liefert true, wenn etwas entfernt wurde | TCustomEdit |
Destroy(): void | Gibt eigene Ressourcen frei | TCustomEdit |
GetText(): pchar | Inhalt lesen | TCustomEdit |
HasSelection(): bool | Es ist etwas ausgewählt | TCustomEdit |
InitEdit(): void | Grundzustand des Eingabefelds | TCustomEdit |
InsertChar(cp: int64): void | Zeichen einfügen | TCustomEdit |
IsWordByte(b: int64): bool | Zaehlt ein Zeichen zum Wort? Ziffern, Buchstaben und der Unterstrich — alles ab 128 gilt als Buchstabe, damit Umlaute nicht mitten im Wort eine Grenze bilden. Eine echte Unicode-Tabelle … | TCustomEdit |
MoveCaret(pos: int64, keep: bool): void | Marke setzen. `keep` behaelt den Ankerpunkt (Umschalt+Pfeil erweitert die Auswahl), sonst wird sie aufgehoben | TCustomEdit |
PasteFromClipboard(): bool | Einfuegen ersetzt eine bestehende Auswahl — so erwartet man es | TCustomEdit |
SaveUndo(): void | Den jetzigen Stand als Rueckfallpunkt merken. Wird VOR jeder Änderung durch den Nutzer gerufen | TCustomEdit |
SelHigh(): int64 | Größere Grenze der Auswahl | TCustomEdit |
SelLength(): int64 | Länge der Auswahl in Bytes | TCustomEdit |
SelLow(): int64 | Kleinere Grenze der Auswahl | TCustomEdit |
SelTextTo(dst: TTextBuffer): void | Der ausgewählte Text. Der Puffer gehört dem AUFRUFER — er hat ihn mitgebracht, damit hier nichts angelegt wird, das niemand freigibt | TCustomEdit |
SelectAll(): void | Alles auswählen | TCustomEdit |
SelectWordAt(pos: int64): void | Das Wort an einer Stelle auswaehlen — der Doppelklick. Steht die Stelle nicht IN einem Wort (Leerraum, Satzzeichen), wird das Zeichen darunter genommen: eine Auswahl von Länge null wäre … | TCustomEdit |
SetCharCase(v: int64): void | Setzt CharCase | TCustomEdit |
SetModified(v: bool): void | Setzt Modified | TCustomEdit |
SetSelText(s: pchar): void | Die Auswahl durch anderen Text ersetzen. Ohne Auswahl wird an der Marke eingefuegt — genau wie Delphis SelText-Zuweisung | TCustomEdit |
SetSelection(start: int64, laenge: int64): void | Auswahl auf start mit laenge setzen | TCustomEdit |
SetText(s: pchar): void | Setzt Text | TCustomEdit |
SetTextHint(s: pchar): void | Setzt TextHint | TCustomEdit |
ShowingTextHint(): bool | Zeigt das Feld gerade nur seine Andeutung? | TCustomEdit |
TextLength(): int64 | Länge | TCustomEdit |
Undo(): bool | Tauschen statt überschreiben: so ist das zweite Undo das Redo | TCustomEdit |
WordEnd(pos: int64): int64 | Ende des Wortes, in dem pos liegt | TCustomEdit |
WordStart(pos: int64): int64 | Anfang des Wortes, in dem pos liegt | TCustomEdit |
AddLine(s: pchar): void | Zeile anhängen | TMemo |
Append(s: pchar): void | Delphis Name für AddLine. Beides steht hier, weil Lines.Add der gewohnte Weg ist und Append der kurze | TMemo |
ClearLines(): void | Alles löschen | TMemo |
Create(text: pchar): void | Anlegen; new TSyntaxEdit() | TMemo |
Destroy(): void | Gibt eigene Ressourcen frei | TMemo |
GetLine(index: int64): pchar | Eine einzelne Zeile lesen bzw. anhaengen — der haeufigste Fall, ohne dass dafuer eine ganze Liste entstehen muss | TMemo |
GetLines(): TStringList | Aktuellen Inhalt als Liste. Der Aufrufer besitzt sie und gibt sie frei | TMemo |
LineAt(pos: int64): int64 | In welcher Zeile liegt diese Byteposition? | TMemo |
LineCount(): int64 | Anzahl Zeilen: Umbrueche plus eins. Ein leerer Text hat eine Zeile | TMemo |
LineEnd(line: int64): int64 | Byteposition des Zeilenendes (vor dem Umbruch) | TMemo |
LineStart(line: int64): int64 | Byteposition, an der Zeile `line` beginnt | TMemo |
LineTextTo(dst: TTextBuffer, line: int64): void | Eine einzelne Zeile in den Puffer des Aufrufers | TMemo |
LineX(line: int64, pad: int64): int64 | Linker Rand EINER Zeile. Bei linksbuendigem Text ist das der Rand; sonst hängt er an der Breite dieser Zeile, und deshalb rechnet ihn auch die Schreibmarke über dieselbe Methode aus | TMemo |
LinesTo(dst: TStringList): void | Alle Zeilen in eine Liste. Die Liste gehört dem Aufrufer | TMemo |
RangeWidth(a: int64, b: int64): int64 | Pixelbreite des Textes zwischen zwei BYTE-Positionen im Puffer. Der Puffer ist nicht je Zeile nullterminiert, deshalb kann hier nicht TextWidthUpTo benutzt werden — es wird bis zur … | TMemo |
SetAlignment(v: int64): void | Setzt Alignment | TMemo |
SetLines(l: TStringList): void | Inhalt aus einer Liste setzen. Hier stand einmal eine zweite Fassung weiter unten in derselben Klasse. lyxc übersetzt das ohne Fehler (#1668) und nimmt die ZUERST deklarierte — die … | TMemo |
TextLeft(): int64 | Linke Kante des Textbereichs | TMemo |
VisibleLines(): int64 | Wieviele Zeilen passen ins Feld? | TMemo |
ClearAttrs(): void | Entfernt alle Auszeichnungen | TRichEdit |
ClearRuns(): void | Entfernt alle Läufe | TRichEdit |
ColorAt(pos: int64): TColor | Farbe an dieser Stelle | TRichEdit |
Create(text: pchar): void | Anlegen; new TSyntaxEdit() | TRichEdit |
Destroy(): void | Gibt eigene Ressourcen frei | TRichEdit |
DoSelectionChange(): void | Meldet eine geänderte Auswahl nach außen | TRichEdit |
FindText(was: pchar, ab: int64, achteAufGrosz: bool): int64 | Delphis FindText: liefert die Byteposition oder -1. Ohne Gross-/Kleinschreibung zu beachten wäre es die Haelfte der Faelle; deshalb ist es ein Schalter | TRichEdit |
Run(i: int64): TAttrRun | Ereignisschleife starten | TRichEdit |
RunAt(pos: int64): TAttrRun | Der Lauf, der die Byteposition enthaelt — oder null, wenn dort nichts ausgezeichnet ist | TRichEdit |
RunCount(): int64 | Zahl der Läufe | TRichEdit |
SelColor(): TColor | Die Auszeichnung der Auswahl lesen. Uneinheitlich ausgezeichnet? Dann gilt, was am Anfang steht — wie in Delphi | TRichEdit |
SelHasUniformStyle(): bool | Traegt der ganze ausgewählte Bereich denselben Schnitt? Delphi liefert dafuer eine „unbestimmt“-Antwort; hier ist es eine Frage | TRichEdit |
SelStyle(): int64 | Schnitt der Auswahl | TRichEdit |
SelectRange(a: int64, laenge: int64): void | Fundstelle auswaehlen — damit ist die Suche auch sichtbar | TRichEdit |
SetRangeAttrs(a: int64, b: int64, c: TColor, st: int64): void | Einen Bereich auszeichnen. Das ist der Kern: Delphis SelAttributes.Color := clRed | TRichEdit |
SetSelAttrs(c: TColor, st: int64): bool | Dasselbe für die aktuelle Auswahl — der übliche Weg | TRichEdit |
ShiftRuns(ab: int64, delta: int64): void | Verschiebt die Läufe nach einer Textänderung | TRichEdit |
StyleAt(pos: int64): int64 | Schnitt an dieser Stelle | TRichEdit |
ToggleSelStyle(bit: int64): bool | Einen Schnitt an- oder abschalten, ohne die Farbe anzufassen | TRichEdit |
BracketPos1(): int64 | Position der ersten gefundenen Klammer | eigen |
BracketPos2(): int64 | Position der zugehörigen Klammer | eigen |
Create(text: pchar): void | Anlegen; new TSyntaxEdit() | eigen |
Destroy(): void | Gibt eigene Ressourcen frei | eigen |
FindMatchingBracket(pos: int64): int64 | Den Partner zu der Klammer an `pos` suchen. -1, wenn keiner da ist. Gezaehlt wird mitlaufend: jede gleichartige Klammer erhoeht, jede gegenlaeufige senkt — bei null ist der Partner erreicht | eigen |
GutterWidth(): int64 | Breite des Randstreifens | eigen |
IndentOfLine(line: int64, dst: TTextBuffer): void | Die Einrueckung einer Zeile als Zeichenkette — Leerzeichen und Tabulatoren, wie sie dort stehen | eigen |
InsertTab(): void | Leerzeichen bis zur nächsten Tabulatorspalte einfuegen. Nicht TabWidth Stück: wer in Spalte 3 steht, will auf 4, nicht auf 7 | eigen |
LineNumberDigits(): int64 | Wieviele Stellen die groesste Zeilennummer hat. Danach richtet sich die Breite — eine Datei mit 80 Zeilen braucht keinen Platz für vier Ziffern | eigen |
Rehighlight(): void | Den ganzen Text neu einfaerben. Der Abtaster fragt an jeder Stelle in fester Reihenfolge: steht hier ein Blockkommentar, ein Zeilenkommentar, eine Zeichenkette, eine Zahl, ein Wort? Die … | eigen |
SetSource(s: pchar): void | Text von aussen setzen — danach ebenfalls faerben | eigen |
SetSyntax(s: TSyntaxDef): void | Eine Sprache anhaengen, die dem Aufrufer gehört | eigen |
SyntaxName(): pchar | Name der eingestellten Sprache | eigen |
TakeSyntax(s: TSyntaxDef): void | Eine Sprache übernehmen — das Feld raeumt sie später weg | eigen |
UpdateBrackets(): void | Nach jeder Bewegung der Marke: liegt sie an einer Klammer? Geprueft wird an der Marke UND davor — steht sie hinter einer schließenden Klammer, ist die gemeint, so wie es jeder Editor hält | eigen |
| Name | Typ | Wann | Herkunft |
|---|---|---|---|
OnChange | TNotifyEvent | Der Inhalt oder die Auswahl hat sich geändert | TCustomEdit |
OnSelectionChange | TNotifyEvent | Meldet sich, wenn sich Auswahl ODER deren Auszeichnung geaendert hat | TRichEdit |
Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus vega/syntaxedit.lyx im Repo lyx-vcl.