Inhaltsverzeichnis

TRichEdit — Text mit Auszeichnungen

Ein TMemo, dessen Text abschnittsweise ausgezeichnet werden kann: Farbe und Schnitt je Lauf. Die Läufe liegen nach Startposition sortiert und überlappungsfrei nebeneinander.

Unit: vega.richedit · Basis: TMemo

Alle Steuerelemente · Klassenbaum · Guide: Komponenten


Vererbung

Kette: TComponentTControlTCustomEditTMemoTRichEdit

Direkte Nachfahren: TSyntaxEdit

Quelle: vega/richedit.lyx


Verwendung

var re: TRichEdit := new TRichEdit();
re.SetBounds(8, 8, 400, 200);
re.SetParent(f);
re.SetText("Warnung: die Datei fehlt.");

// Die ersten acht Zeichen rot und fett
re.SetRange(0, 8, clRed, FS_BOLD);

// Was ab jetzt getippt wird:
re.SetDefColor(clBlack);
re.SetDefStyle(FS_NORMAL);


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 eigen
DefStyle int64 Schnitt für neu getippten Text eigen
PlainText bool Nur Text, keine Auszeichnungen. Wie in Delphi: gesetzt, verhaelt sich das Feld wie ein TMemo, und die Laeufe bleiben unbeachtet eigen
Runs TObjectList Die Laeufe, nach Start sortiert und überlappungsfrei 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 TRichEdit() 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 eigen
ClearRuns(): void Entfernt alle Läufe eigen
ColorAt(pos: int64): TColor Farbe an dieser Stelle eigen
Create(text: pchar): void Anlegen; new TRichEdit() eigen
Destroy(): void Gibt eigene Ressourcen frei eigen
DoSelectionChange(): void Meldet eine geänderte Auswahl nach außen eigen
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 eigen
Run(i: int64): TAttrRun Ereignisschleife starten eigen
RunAt(pos: int64): TAttrRun Der Lauf, der die Byteposition enthaelt — oder null, wenn dort nichts ausgezeichnet ist eigen
RunCount(): int64 Zahl der Läufe eigen
SelColor(): TColor Die Auszeichnung der Auswahl lesen. Uneinheitlich ausgezeichnet? Dann gilt, was am Anfang steht — wie in Delphi eigen
SelHasUniformStyle(): bool Traegt der ganze ausgewählte Bereich denselben Schnitt? Delphi liefert dafuer eine „unbestimmt“-Antwort; hier ist es eine Frage eigen
SelStyle(): int64 Schnitt der Auswahl eigen
SelectRange(a: int64, laenge: int64): void Fundstelle auswaehlen — damit ist die Suche auch sichtbar eigen
SetRangeAttrs(a: int64, b: int64, c: TColor, st: int64): void Einen Bereich auszeichnen. Das ist der Kern: Delphis SelAttributes.Color := clRed eigen
SetSelAttrs(c: TColor, st: int64): bool Dasselbe für die aktuelle Auswahl — der übliche Weg eigen
ShiftRuns(ab: int64, delta: int64): void Verschiebt die Läufe nach einer Textänderung eigen
StyleAt(pos: int64): int64 Schnitt an dieser Stelle eigen
ToggleSelStyle(bit: int64): bool Einen Schnitt an- oder abschalten, ohne die Farbe anzufassen 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 eigen

Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus vega/richedit.lyx im Repo lyx-vcl.