[gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

[gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von idefix »

Hallo!

Ich schreibe ein Vokabelprogramm.

Es wird die Memo2.Lines.Strings[0]; mit der Memo3.Lines.Strings[0] verglichen.
Das klappt auch alles.

Jetzt möchte ich die gegebene Antwort (in Memo2.Lines.Strings[0]) Buchstabenweise mit Memo3.Lines.Strings[0] (hinterlegte Antwort) vergleichen.
(Das werde ich auch hinkriegen.)

Das möchte ich machen, um in der gegebenen Antwort die richtigen Buchstaben schwarz zu lassen, und die falschen Buchstaben rot zu schreiben.

---------------

Text des Memos kann ich mittels
Memo2.Font.Color:= clRed;
einfärben.

Meine Frage ist jetzt, wie ich einzelne Buchstaben in einer Memo2.Lines.Strings[0] einfärbe.

Ich hoffe ich konnte das verständlich darstellen.

Vielen Dank!

Gruß!
idefix
Zuletzt geändert von idefix am Fr 20. Jul 2012, 22:23, insgesamt 5-mal geändert.

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von MAC »

in der Standart-Memo geht dies sicherlich nicht.
Mit SynEdit wird das wahrscheinlich machbar sein (SynEdit ist die "Memo", welche Lazarus benutzt, dort sind ja auch verschiedene Farben möglich, wie z.B. Blaue Komentare...)

Du könntest aber auch mit einem kleinen Trick arbeiten, indem du das ganze nicht in der Memo, sondern in einem Label (bzw 3 Labeln) anzeigst:
Beispiel: das Wort "Hehllo" ist falsch geschrieben.
Dann schreibst du in das erste Label "He", in das zweite den Fehler "h" und in das dritte Label "llo".
Wenn du jetzt das erste und dritte Label schwarz machst und das zweite rot und die "Anchors" benutzt erhälst du ein ähnliches Ergebnis mit einem relativ geringen Auffand...

Code: Alles auswählen

Signatur := nil;

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von martin_frb »

TMemo kann nur eine Farbe darstellen.
Dasselbe gilt fuer TLabel (Antwort von MAC). Mehrere Label aneinander zu haengen ist aufwendig....

Es gibt 2 andere Text Kompononten:

1) TRichMemo. Verhaelt sich wie ein Memo, aber kann Farben. Google...

2) TSynEdit (TSynMemo ist eine Kopie von SynEdit)

Unterschied: Kein automatischer Zeilenumbruch. Nur Monospaced fonts.

Kann ebenfalls Farben. Im example folder ist ein Beispiel fuer den TSynPosSyn (Poitions Highlighter)
BTW TSynEdit kann eine rote zickzack Unterstreichung.

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von idefix »

Hallo!

Ich bin gerade am schreiben, das die gefundenen Beispiele unter
http://www.lazarusforum.de/viewtopic.php?f=18&t=5955
nicht funktionieren.

Ich habe sowohl lzRichEdit als auch RichMemo installiert. Und TSynEdit gefunden.

Da spiele ich doch noch mit dem Code rum.
Es geht doch.
Und zwar das Beispiel von corpsman (zum Schluss clblack in clred ändern).

Nun habe ich noch einiges zum austesten.

------------------
martin_frb hat geschrieben:
1)TRichMemo. Verhaelt sich wie ein Memo, aber kann Farben. Google...
Installiert habe ichs.
Ich habe bisher nichts gefunden, wo Farbe funktioniert.
Über einen Link wäre ich dankbar.
2) TSynEdit (TSynMemo ist eine Kopie von SynEdit)

Kann ebenfalls Farben. Im example folder ist ein Beispiel fuer den TSynPosSyn (Poitions Highlighter)
Im example folder von SynMemo, oder von lazarusforum.de?

Ich sehe gerade SynMemo und SynEdit sind im Uses eingebunden.
Wenn das also in diesen Units ist, wo finde ich die?

Vielen Dank!

Gruß!
idefix

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von martin_frb »

Im Installations Verzeichniss von Lazarus ist ein Ordner examples/synedit/

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von idefix »

Hallo!

Das Beispiel funktioniert.

Bleibt das Problem mit dem nicht vorhandenen Zeilenumbruch.
Gibt es da eine Lösungsmöglichkeit?

Danke!

Gruß!
idefix

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von martin_frb »

Leider nicht. (Nicht in naher Zeit...) SynEdit kann kein wordwrap.

Du kannst selbst auf onResize reagieren und CharsInWindow property nutzen. Wird aber aufwendig, weil auch das caret umgesetzt werden muss....

Vielleicht kann ja jemand anderes beim RichMemo helfen...

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: Wie einzelne Buchstaben einer Memo2.Lines.Strings einfärben?

Beitrag von idefix »

Hallo!
martin_frb hat geschrieben:Leider nicht. (Nicht in naher Zeit...) SynEdit kann kein wordwrap.

Du kannst selbst auf onResize reagieren und CharsInWindow property nutzen. Wird aber aufwendig, weil auch das caret umgesetzt werden muss....

Vielleicht kann ja jemand anderes beim RichMemo helfen...
Ich werde jetzt mit lzRichEdit1 weitermachen. Ich habe ein Beispiel, wo in einer Zeile zwei Farben vorkommen.

Alles andere ist Fleißarbeit.

Danke!

Gruß!
idefix

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: [gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von idefix »

Hallo!

Ich habe doch noch eine Frage.
Wie kann ich zur Laufzeit Buchstaben eines lzRichEdit unterstreichen.
Und zwar nur einzelne Buchstaben, nicht das ganze Wort.

Mir fehlt konkret die Korrektur für diesen Befehl, die der Compiler nicht akzeptiert.

Code: Alles auswählen

lzRichEdit2.Font.Style.[fsUnderlin] := true;
Bis einschließlich Style klappt der Compiler nach jedem Punkt die Liste auf, aus der man aussuchen kann.
Auch das Weglassen des Punktes bringt nichts.

----------------

PS. Wie ist das in diesem Forum, für jede neue Frage einen extra Thread, oder alle Fragen in einem Thread stellen?

Vielen Dank!

Gruß!
idefix

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: [neue Frage] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von Heinrich Wolf »

idefix hat geschrieben:Mir fehlt konkret die Korrektur für diesen Befehl, die der Compiler nicht akzeptiert.

Code: Alles auswählen

lzRichEdit2.Font.Style.[fsUnderlin] := true;
Ich kenne LzRichEdit nicht, nur Delphi RichEdit und Lazarus RichMemo. Da ist Font.Style ein Set. Wahrscheinlich geht es so:

Code: Alles auswählen

lzRichEdit2.Font.Style := [fsUnderline];

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: [neue Frage] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von corpsman »

PS. Wie ist das in diesem Forum, für jede neue Frage einen extra Thread, oder alle Fragen in einem Thread stellen?
So viel ich weis stellst du immer neue Fragen, zumindest wenns um gravierende dinge geht, was du da hast ist ja eher was für den Chat, oder Google...
--
Just try it

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: [neue Frage] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von idefix »

Hallo!

Ich habe das jetzt gelöst, indem ich einfach ein Unterstrich zum eingegebenen String dazu addiere.

Das andere klappt nicht. Da wird nur die ganze Zeile unterstrichen.

Danke!

Gruß!
idefix

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: [gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von Heinrich Wolf »

idefix hat geschrieben:Ich habe das jetzt gelöst, indem ich einfach ein Unterstrich zum eingegebenen String dazu addiere.
Was hast Du da genau gemacht?
idefix hat geschrieben:Das andere klappt nicht. Da wird nur die ganze Zeile unterstrichen.
Auch ich habe eine Anwendung mit TRichMemo gemacht und das Unterstreichen eines einzelnen Zeichens (eine Ziffer zwischen 2 Tabs in einem Kalender) klappt da wunderbar. Ich hab nur bemerkt, dass ich mit Umlauten beim Zählen der Positionen aufpassen muss (UTF8Length verwenden).

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: [gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von idefix »

Hallo!
Heinrich Wolf hat geschrieben:
idefix hat geschrieben:Ich habe das jetzt gelöst, indem ich einfach ein Unterstrich zum eingegebenen String dazu addiere.
Was hast Du da genau gemacht?
idefix hat geschrieben:Das andere klappt nicht. Da wird nur die ganze Zeile unterstrichen.
Auch ich habe eine Anwendung mit TRichMemo gemacht und das Unterstreichen eines einzelnen Zeichens (eine Ziffer zwischen 2 Tabs in einem Kalender) klappt da wunderbar. Ich hab nur bemerkt, dass ich mit Umlauten beim Zählen der Positionen aufpassen muss (UTF8Length verwenden).
Ich kann wohl erstmal nichts dazu schreiben.

Ich habe mir mittels einer ubuntu Installation den Zugang zu Win 7 zerschossen.

Könnte länger dauern.

Danke!

Gruß!
idefix

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: [gelöst] Wie einzelne Buchstaben einer Memo einfärben?

Beitrag von MAC »

idefix hat geschrieben: Ich kann wohl erstmal nichts dazu schreiben.

Ich habe mir mittels einer ubuntu Installation den Zugang zu Win 7 zerschossen.

Könnte länger dauern.

Danke!

Gruß!
idefix
Super Grub boot disk , kann ich nur empfehlen... :D

Code: Alles auswählen

Signatur := nil;

Antworten