Inhaltsverzeichnis

TSyntaxEdit — Quelltextfeld mit Einfärbung

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


Vererbung

Kette: TComponentTControlTCustomEditTMemoTRichEditTSyntaxEdit

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

Quelle: vega/syntaxedit.lyx


Verwendung

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.


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
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

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
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

Ereignisse

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.