![]() |
FMX TMemo -> TMemo mit Textattr.
Hallo Zusammen!
Nach einem kurzem Blick in die FMX.Memo Sourcen musste ich feststellen, dass die "Lines" eigentlich keine TStrings sind, sondern TMemoLines und so gar jede Zeile Ihr eigenen TTextLayout mit bringt. Wie weit ist der Schritt bis zu einem Memo das Fett und unterstrichen kann? ggf. Mehr... Hat sich da schon einer von Euch mit beschäftigt? In der Regel würden doch kleine Textstyle oft reichen... Muss ja nicht immer direkt RTF sein! Mir würde es zum Beispiel reichen aus einem Das ist ein #FBeispiel#F Text... Das ist ein Beispiel Text... zu machen... Mavarik |
AW: FMX TMemo -> TMemo mit Textattr.
Nur dass man hier dieses TextLayout eben nicht pro Zeile sondern pro Buchstaben benötigen würde oder etwas schlauer zusammengefasst pro Formatierungs-Block.
Einfach so das
Delphi-Quellcode:
ein bisserl erweitern wird nicht funktionieren.
TMemo
Wir hatten hier mal einen Thread, wo aus einem Text die Formatierung herausgelesen werden sollte und dann entsprechend die Darstellung erfolgen sollte (war für VCL). Das Prinzip ist dabei gleich nur das tatsächliche Zeichnen ist halt anders bei FMX (logisch). |
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
|
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
Zitat:
|
AW: FMX TMemo -> TMemo mit Textattr.
NaJa, Eigentlich ist es so, daß Du nur die Ausgabe modifizieren mußt.
Für jede Textzeile benötigst Du eine Attributzeile (vorrausgesetzt wir beschränken uns auf fett,unterstrichen, hochgestellt usw.). Dann gibst Du Zeichen für Zeichen und Attribut für Attribut mit Hilfe von .Textout den Text aus. Klar kann man da auch noch ein wenig verkürzen z.B. "StartFett"/"EndeFett" aber das Prinzip bleibt gleich. (jo das ist das gleiche Prinzip wie damals zu DOS-Zeiten und dem direkten Schreiben in den Displaybuffer) Gruß K-H |
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
Und? war doch prima und super schnell und hat uns doch jahrelang gute Dienste geleistet... Auf jeden Fall besser als den int21 auf zu rufen... Und von scrollen wollen wir gar nicht erst reden...[/OT] FMX macht es auch nicht anders... Ein TTextAttribute mit Range für die Formatierung... Ist unterm Strich auch nix anderes wie eine StartFett EndFett... |
AW: FMX TMemo -> TMemo mit Textattr.
[OT] :mrgreen: [/OT]
|
AW: FMX TMemo -> TMemo mit Textattr.
Ich denke, ich würde für diesen Zweck 150,- EUR in die Hand nehmen und das FMX-Paket von TMS kaufen, dort ist ein RTF-Control enthalten.
|
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
|
AW: FMX TMemo -> TMemo mit Textattr.
Das blöde ist ja, daß die verschiedenen RTF-Komponenten nicht die vollständige RTF-Definition beherschen (was auch legitim ist). Wenn jetzt jemand eine TextmitAttributen-Komponente hat, dann ist das eine feine Sache, aber eine Komponente "RTF" zu nennen, nur weil sie fette Schrift kann, oder umgekehrt weil ich fette Schrift brauche, dann gleich eine RTF-Komponente nutzen, das fühlt sich nicht richtig an.
Gruß K-H |
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
Ich brauche keine Tabellen oder Bilder im Text oder aus auch immer... Lediglich mal einen Text mit ein bisschen fett und unterstrichen... Wenn das dann noch ein (Multiline)Edit ist... um so besser... |
AW: FMX TMemo -> TMemo mit Textattr.
PS: Man versucht nun endlich wieder auf native Komponenten umzusteigen, also eh du jetzt versuchst diesem Memo ein Verhalten beizubringen, welches es von der Definition her eigentlich nicht besitzt, solltest du bedenken, daß die aktuelle Implementierung bald ganz anders aussehn könnte und dein Vorhaben dann so garnicht mehr möglich wäre.
Im QC gibt es ein aktuelles Ticket von mir, wo ich auf die aktuelle Implementierung des TLinkLabel eingeh. Wenn man das wirklich multiplattfom umsetzen würde, dann muß man sowieso <a> manuell behandeln, wobei dort natürlich der Text eine andere Formatierung besitzt. Eventuell könnte man dort auch noch recht "einfach" <b>, <i> und <u> mit implementieren. |
AW: FMX TMemo -> TMemo mit Textattr.
Ich würde hier auch nicht das TMemo "verwurschteln", sondern lieber gleich eine Komponente verwenden, die für sowas gedacht ist, eben den hier schon erwähnten RichEditor von TMS.
Ansonsten: Wenn es nur darum geht, an ganz wenigen Stellen im Text Fett, unterstrichen oder sonst was zu machen, nimm doch ein TGrid, lege dort eine TStringColumn rein, neutralisiere den Selektionsbalken (Farbe) durch einen angepassten Style, lasse Linien und Header weg und zeichne den Text selber (nach Deiner angedeuteten Systematik) in dem GridDrawColumCell-Event (Du musst dabei allerdings das GetValue-Event mit einem Flag austricksen, damit das Grid den Text nicht selber malt, sondern Dir das überlassen wird). Könnte man machen. Aber ehrlich gesagt, die Arbeit würde ich mir nicht machen, sondern eben direkt eine fertige Komponente nehmen. |
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
Ich habe schon lange eigene Routinen die einen beliebigen Text mit allen Formatierungen auf einen Canvas "printet"... Was ich nicht habe ist eine Editor... Derjenige von Euch der mal eben eine FMX-Komponte mit Cursor Markierungen Clibboard usw... Programmiert... Hut ab... Ich würde den FMX.Memo.pas File kopieren und so lange erweitern, bis er das nötige kann... |
AW: FMX TMemo -> TMemo mit Textattr.
OK, dann wäre ja ein gängiger Weg, eine neue Komponente zu erstellen und die von TMemo abzuleiten und die notwendigen Änderungen vorzunehmen.
Da könntest Du Dich mal in FMX.Memo an TMemo.DoContentPaint orientieren. Da wird u.a. auch das highlighting für das Spellchecking gezeichnet. Statt Kringel zeichnest Du dann eben z.B. Unterstreichungen, bzw. Du klinkst Dich da in die Darstellung des Textes ein, in dem Du dort irgendwelche von Dir ausgedachten TAGS auswertest, die Tags entfernst und noch den verbleibenden Text entsprechend der TAG-Information zeichnest. |
AW: FMX TMemo -> TMemo mit Textattr.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz