[Erledigt] Verschiedenfarbige Ausgabe

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

[Erledigt] Verschiedenfarbige Ausgabe

Beitrag von catweasel »

Hallo

Ich schreibe ein kleines Programm das u.a. ein RegEx testen soll.
Der Regex funktioniert bereits und ich habe auch die Position und Länge des Treffers.

Bei einem Treffer möchte ich das genau der Teil der matched in einer anderen Farbe (oder auch nur in Fettschrift) dargestellt wird

Beispiel
Auf denText: "das_ist_ein_test"
wende ich den RegEx "test$" an (Treffer an Position 13, Länge 4)


dann soll im Ergebnis stehen:
"das_ist _ein_test" oder "das_ist _ein_test"

Label oder Edit kann meines Wissens nur einfarbig gemacht werden. Auch im Memo bin ich nicht fündig geworden.
Wie kann ich eine Ausgabe eines Textes zweifarbig machen?

Gruß
Michael
Zuletzt geändert von catweasel am Mi 27. Sep 2017, 20:25, insgesamt 1-mal geändert.

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Verschiedenfarbige Ausgabe

Beitrag von Mathias »

Das ist die einzige Art die ich kenne.

Code: Alles auswählen

  Canvas.Font.Color := clBlack;
  Canvas.TextOut(10, 10, 'Hello');
  Canvas.Font.Color := clRed;
  Canvas.TextOut(40, 10, 'World');

Ansonsten wäre ein Richmemo eine Variante.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Verschiedenfarbige Ausgabe

Beitrag von catweasel »

Mathias hat geschrieben:Das ist die einzige Art die ich kenne.

Code: Alles auswählen

  Canvas.Font.Color := clBlack;
  Canvas.TextOut(10, 10, 'Hello');
  Canvas.Font.Color := clRed;
  Canvas.TextOut(40, 10, 'World');

Ansonsten wäre ein Richmemo eine Variante.


Danke für die Info.
Das ist zwar eine ziemliche pulerei aber so hat es funktioniert.

Gruß
Michael

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: [Erledigt] Verschiedenfarbige Ausgabe

Beitrag von gladio »

Man kann das auch mit Labeln machen.
Deine Teilstrings z.B. den Captions von zwei Labeln zuweisen und dann 'zusammenkleben':

Code: Alles auswählen

 
  Label1.Caption := String1;
  Label2.Caption := String2;
  Label2.Font.Color := clRed;  //oder Bold
  Label2.Left := Label1.Left+Label1.Width+3; //3 hier einfach als Abstand
  Label2.Top := Label1.Top;

Mathias
Beiträge: 6167
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [Erledigt] Verschiedenfarbige Ausgabe

Beitrag von Mathias »

Dies ist natürlicher um einiges eleganter. Das eleganteste wäre, eine neue Komponente zu schreiben, welche von TStaticText oder TLabel ableitet.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten