TextOut mit unterschiedlichen Fonts in einer Zeile
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
TextOut mit unterschiedlichen Fonts in einer Zeile
Ich versuche, einen Chat mit Hyperlinks und Emotes aufzupeppen. Bisher habe ich den Text in einem StringGrid ausgegeben, um in der linken Spalte die Zeit anzuzeigen und dabei einen Einzug für den Textumbruch hinzubekommen. Die Ausgabe mache ich per Canvas.DrawText() mit DT_WORDBREAK. Nun hätten meine Anwender gern, dass Hyperlinks als solche angezeigt werden und klickbar sind. Das geht mit der lazrichview-Komponente, wobei dort meine Eingriffsmöglichkeiten begrenzt sind. Zum Beispiel kann ich den Hintergund einer einzelnen Zeile nicht farbig ändern, Graphiken werden immer zentriert ausgegeben und einen Einzug gibt es auch nicht. Gibt es eine einfachere Variante zum Zeichnen verschiedener Fonts, ohne per Textwidth() die Teile einzeln auszugeben? Und wie würdet ihr den Hyperlink klickbar machen? Wirklich sinnvoll ist es wohl nicht, zu prüfen, ob das Zeichen unter der Maus unterstrichen ist
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TextOut mit unterschiedlichen Fonts in einer Zeile
Es gibt verschiedene Möglichkeiten. Es geht auch direkt mit TextOut, so mache ich es bei mir "Text Engine", es ist aber nicht einfach, je nach dem was du möchtest.
Am Einfachsten ist es: TRichView oder das HTML Panel für solche Aufgaben zu verwenden. Zur Zeit. Unter Windows gibt es auch noch das RichMemo, was auch unter MacOS und bald auch unter Linux laufen sollen.
Du könntest es auch selbst machen, aber das ist wie schon gesagt nicht so einfach.
01) Du musst Objekte haben. Text und Link Objekte.
02) Du musst die Informationen über den Style der Objekte speichern.
03) Genau so wie einige Grund Funktionen. Wie z.b. das Scrollen, das Markieren und das Zoomen.
Am Einfachsten ist es: TRichView oder das HTML Panel für solche Aufgaben zu verwenden. Zur Zeit. Unter Windows gibt es auch noch das RichMemo, was auch unter MacOS und bald auch unter Linux laufen sollen.
Du könntest es auch selbst machen, aber das ist wie schon gesagt nicht so einfach.
01) Du musst Objekte haben. Text und Link Objekte.
02) Du musst die Informationen über den Style der Objekte speichern.
03) Genau so wie einige Grund Funktionen. Wie z.b. das Scrollen, das Markieren und das Zoomen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: TextOut mit unterschiedlichen Fonts in einer Zeile
Wenn es einfach wäre, hätte ich nicht gefragt
Mein Programm soll nicht nur unter Windows laufen und HTMLPanel ist keine mir bekannte Komponente. Mit Scrollen, Zoomen (was ich nicht brauche) und der Objektverwaltung komme ich zurecht. Meine Frage war eigentlich dahingehend, wie Microsoft zum Beispiel das DrawText in einem Richedit realisiert.
Mein Programm soll nicht nur unter Windows laufen und HTMLPanel ist keine mir bekannte Komponente. Mit Scrollen, Zoomen (was ich nicht brauche) und der Objektverwaltung komme ich zurecht. Meine Frage war eigentlich dahingehend, wie Microsoft zum Beispiel das DrawText in einem Richedit realisiert.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: TextOut mit unterschiedlichen Fonts in einer Zeile
Das ist eine gute Frage. Wenn wir das wüsten, hätten wir schon ein eigenen RichEdit geschrieben *G*.
Das HTML Panel ist aber nicht schlecht. Ich glaube das musst du erst Installieren. RichView ist auch nicht schlecht....
Das HTML Panel ist aber nicht schlecht. Ich glaube das musst du erst Installieren. RichView ist auch nicht schlecht....
MFG
Michael Springwald
Michael Springwald