![]() |
Re: Richedit/Memo "nachprogrammieren"
Zitat:
Zitat:
Zitat:
Das Problem ist einfach, dass das Control nicht dafür entworfen wurde, dass ihm ein "halber" Zeilenumbruch geschickt wird. Schon mal daran gedacht, Daten und Darstellung einfach zu trennen?
Delphi-Quellcode:
[Nachtrag]
var strDaten: string;
strDaten := strDaten + Zeichen; Memo1.Text := AdjustLineBreaks(strDaten); andere Variante, wenn man .Lines.Text setzt, dann ist das AdjustLineBreaks schon mit drin:
Delphi-Quellcode:
var strDaten: string;
strDaten := strDaten + Zeichen; Memo1.Lines.Text := strDaten; |
Re: Richedit/Memo "nachprogrammieren"
moin,
klar geht sowas und das ist auch gar nicht schwer. Ich weis nicht in wie weit du dich schon mit den Zeichnen-Funktionen von Windows beschäftigt hast, aber in der regel sollte es nicht allzu lange dauern. Du brauchst: - eine TStringList - ein Bild / Canvas zur Ausgabe - zwei Scrollbalken Der Rest ist Berechnung. TextHeight() - berechnet die Höhe eines Strings in Pixel TextWidth()- brechnet die Breite eines Strings in Pixel TextOut() - mal den Text auf eine Grafik |
Re: Richedit/Memo "nachprogrammieren"
Zitat:
Zitat:
Zitat:
Verwende ich AdjustLineBreaks, dann wird ja auch wieder etwas dargestellt, was so nicht im "Text" steht, z.B. CR/LF, obwohl nur CR da ist... @bigg: Und wie siehts mit markieren aus? Und kopieren, und einfügen?? Ciao Frederic |
Re: Richedit/Memo "nachprogrammieren"
Hallo,
Zitat:
Aber zurück zum Thema: Ein Speichern der eingehenden Zeichen in einem String, evtl. mit Filterung und anschließender Darstellung dieses Strings scheint mir der beste Weg für das Problem zu sein. Gruß xaromz |
Re: Richedit/Memo "nachprogrammieren"
Hi!
@Xaromz: Kannst du mir mal deine Komponente zeigen? Was bringt mir eine Speicherung? Wie stell ich dann ein LF ohne CR dar? Ciao Frederic |
Re: Richedit/Memo "nachprogrammieren"
Zitat:
Zum Markieren benötigst du zwei Punkte und dann wird wiederum gezeichnet. Zum Einfügen benötigst du einen Punkt, änderst die Daten in der Liste und zeichnest dein Memo neu. |
Re: Richedit/Memo "nachprogrammieren"
Hallo,
ich hab meine Komponente grad nicht da, die ist auf meinem Rechner im Büro. Meine Komponente nimmt im Grunde genommen einfach beide Zeichen und stellt beide als Zeilenumbruch dar, jedoch nur, wenn nach einem #10 kein #13 kommt und umgekehrt Also folgendermaßen: #65#10#65 -> A, Zeilenumbruch, A #65#13#65 -> A, Zeilenumbruch, A #65#10#13#65 -> A, Zeilenumbruch, A #65#13#10#65 -> A, Zeilenumbruch, A #65#10#10#65 -> A, Zeilenumbruch, Zeilenumbruch, A #65#13#13#65 -> A, Zeilenumbruch, Zeilenumbruch, A Das ist natürlich willkürlich gewählt und lässt sich im Quelltext einfach anpassen. Gruß xaromz |
Re: Richedit/Memo "nachprogrammieren"
Hi!
Es wär echt klasse, wenn du sie mir mal geben könntest. Du machst aber keinen CR ohne LF? Ciao Frederic |
Re: Richedit/Memo "nachprogrammieren"
Zitat:
Zitat:
Um das hinzukriegen solltest du dir die aktuelle Zeile und Spalte im Memo merken und die Zeichen jeweils Positionsweise hinzufügen bzw. bei CR machst du "Spalte:=1" und LF machst du "Zeile:=Zeile+1" und bei anderen Zeichen ersetzt du es und machst "Spalte:=Spalte+1". Danach musst du das Caret neu setzen. Muss jetzt leider weg, sonst könnte ich dir eben ein paar Zeilen hinschreiben. |
Re: Richedit/Memo "nachprogrammieren"
Hi!
Ja, Flocke! Genau das! Würde man es ganz durchziehen, müsste man das auch mit dem #8 machen, es geht mir aber erstmal nur um die Zeilenwechsel! Das Memo unterstützt aber nicht von Haus aus, dass man Zeile:=Zeile+1 macht und dann die Spalte noch stimmt, oder? Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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