TextOut mit unterschiedlichen Fonts in einer Zeile

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Scotty
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

Beitrag von Scotty »

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

pluto
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

Beitrag von pluto »

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.
MFG
Michael Springwald

Scotty
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

Beitrag von Scotty »

Wenn es einfach wäre, hätte ich nicht gefragt :roll:
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.

pluto
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

Beitrag von pluto »

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....
MFG
Michael Springwald

Antworten