Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Richedit/Memo "nachprogrammieren" (https://www.delphipraxis.net/50735-richedit-memo-nachprogrammieren.html)

fkerber 30. Jul 2005 19:30


Richedit/Memo "nachprogrammieren"
 
Hi!

Es geht eigentlich darum ein Ausgabefeld ähnlich einem Memo oder Richedit zu programmieren. Also diese Standard-Sachen Text anzeigen (eingeben muss nicht sein), markieren, scrollen etc.

Ist es realistisch, dass man das selbst nachprogrammieren kann?
Falls ja, könnt ihr mir ein paar Ansätze geben?


Danke und Ciao
Frederic

xaromz 30. Jul 2005 19:45

Re: Richedit/Memo "nachprogrammieren"
 
Hallo,

ich bin gerade dabei, sowas ähnliches zu programmieren. Ich wollte eine Komponente, in der ich spezielle Text-Formatierungen vornehmen kann, die es im RichEdit nicht gibt. Ich habe ungefähr 'ne Woche dafür gebraucht, auch wenn die ganze Sache noch nicht ganz fertig ist (das Ganze flimmert ab und zu, ich will noch ASpell intergrieren, Sonderzeichen und Graphiken einfügen können...).

Was willst Du denn genau damit machen (Textformatierun, Graphiken darstellen, Aufzählungen...), vielleicht kann ich Dir ja den ein oder anderen Tipp geben.

Gruß
xaromz

fkerber 31. Jul 2005 03:36

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Es soll eigentlich nur Text darstellen können, keine allzugroßen Spielereien.
Hauptknackpunkt ist, dass ein Memo bzw. Richedit CR und LF nicht richtig interpretiert. Ich kann kein LF machen, wenn ich nicht auch ein CR mache und genau das soll aber unterstützt werden.


Ciao Frederic

mschaefer 31. Jul 2005 06:55

Re: Richedit/Memo "nachprogrammieren"
 
Moin Frederic,

also Dein Problem hat mit der Bedienung im RichEdit/Memo nichts zutun, also schreib keine Komponente mit dem Aufwand. Bei Delphi sind ja die Sourcen dabei, also kann man sowas nachprogrammieren aber Dir scheint eher ein Ausgabefilter zu fehlen und da reicht was abgeleitetes.
Im übrigen wird ja vielfach auf Synedit und RichView verwiesen, was Deinem Problem aber nciht nahekommt.

Grüße // Martin

xaromz 31. Jul 2005 10:03

Re: Richedit/Memo "nachprogrammieren"
 
Hallo,
Zitat:

Zitat von fkerber
Hauptknackpunkt ist, dass ein Memo bzw. Richedit CR und LF nicht richtig interpretiert. Ich kann kein LF machen, wenn ich nicht auch ein CR mache und genau das soll aber unterstützt werden.

In diesem Fall würde ich den Text vor der Zuweisung einfach bearbeiten, so dass die Zeilenumbrüche dem Windows-Standard entsprechen. Wie Martin schon geschrieben hat ist für diesen Zweck eine eigene Komponente schlicht Overkill.

Gruß
xaromz

fkerber 31. Jul 2005 11:00

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Nein, es soll eben nicht dem Windows-Standard angeglichen werden (also der Text verändert werden), sondern es soll so dargestellt werden, wie es kommt.

Deswegen meine Frage...

Ciao Frederic

Flocke 31. Jul 2005 11:22

Re: Richedit/Memo "nachprogrammieren"
 
Zitat:

Zitat von fkerber
Hauptknackpunkt ist, dass ein Memo bzw. Richedit CR und LF nicht richtig interpretiert.

RichEdits können das, so weit ich weiß. Habe ich jetzt nicht getestet, aber z.B. zeigt WordPad eine Unix-Textdatei korrekt an, die für Notepad nur aus einer einzigen Zeile besteht.

Wenn du schon eine eigene Komponente machen willst, dann ersetze doch einfach nur die Routine LoadFromStream so, dass LFs korrekt interpretiert werden.

Anderer Ansatz wäre z.B. die Meldungen WM_SETTEXT/EM_REPLACESEL zu überschreiben und hier die LF -> CR/LF Behandlung einzubauen. Also WM_SETTEXT(Text) wird einfach zu EM_SETSEL(0,-1)+EM_REPLACESEL(Text) und in EM_REPLACESEL baust du dann das ganze modifizierte Handling ein.

[Nachtrag]

Habe gerade mal in die VCL-Quellen geschaut - normalerweise sollte auch ein TMemo mit CR/LF oder nur CR oder nur LF umgehen können (ungetestet). Wenn's um das Speichern geht: da müsstest du nur vorher
Code:
Memo1.Lines.LineBreak := #10;
setzen und die Datei wird im Unix-Format abgespeichert.

fkerber 31. Jul 2005 11:33

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Es verhält sich selstam:
Gebe ich (sowohl bei Memo als auch bei Richedit) manuell also mit ALT+010 bzw. ALT+013 ein, dann macht er bei beiden (!) ein LF UND ein CR - also gänzlich falsch interpretiert.

Lese ich Daten vom ComPort aus, werden dort #10 und dann #13 gesendet:
Daraufhin stellen mir Richedit und Memo 2 unlesbare Zeichen (diese Balken) dar. Kommt hingegen ein #13 und dann #10 dann wird korrekt ein Zeilenumbruch gemacht.

Man sieht also, dass diese Implementierung "Schrott" ist.

Entweder muss ich diesen Teil ändern (wo sollte ich da ansetzen?) oder ganz neu....


Ciao Frederic


P.S.: Oder es gibt ne Komponente, die es kann.....

Flocke 31. Jul 2005 11:43

Re: Richedit/Memo "nachprogrammieren"
 
Du hättest aber auch dazu schreiben können, dass du die Zeichen *EINZELN* an das Control schicken willst.

Ich hatte jetzt erst noch ein paar Dinge geschrieben, aber eigentlich hängt die Antwort davon ab, *WIE* du die Zeichen in das Memo setzt.

Also: wie setzt du die Zeichen, die du vom Comport holst, in das Memo?

[Nachtrag]

Noch eine Idee: kannst du nicht einfach #13 ignorieren, d.h. nicht an das Memo weiterleiten, und statt dessen bei #10 immer #13#10 senden?

fkerber 31. Jul 2005 11:50

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Problem ist, dass die Zeichen nicht einzeln behandelt werden.

Momentan gehe ich hin und mache immer nur
Delphi-Quellcode:
Memo1.Text:=Memo1.Text + ch; //ch: char
Es kann jetzt passieren, dass nur ein LF kommt, dann soll auch NUR ein LF gemacht werden, eben ohne CR (von CR steht dann da ja nix). Genauso soll aber auch ein CR behandelt werden, wenn nur ein CR kommt.
Das Memo nimmt bei dieser zeichenweise "Eingabe" immer nur #13#10 als Zeilenwechsel mit CR, aber er soll es auch anders können.


Zum Nachtrag:
Das verändert ja wieder den Text, es zu umgehen ist ja einfach, da mach ich ein Str_Replace und gut ist, aber dann interpretiert er die ankommenden Zeichen falsch.

Ciao Frederic

Flocke 31. Jul 2005 12:09

Re: Richedit/Memo "nachprogrammieren"
 
Zitat:

Zitat von fkerber
Man sieht also, dass diese Implementierung "Schrott" ist.

Eine ganz gewagte Aussage... Ich denke eher, dass sie einfach für deine Zwecke nicht passt.

Zitat:

Zitat von fkerber
Es kann jetzt passieren, dass nur ein LF kommt, dann soll auch NUR ein LF gemacht werden, eben ohne CR (von CR steht dann da ja nix). Genauso soll aber auch ein CR behandelt werden, wenn nur ein CR kommt.

Was soll das Memo in den einzelnen Fällen den anders machen?

Zitat:

Zitat von fkerber
Das Memo nimmt bei dieser zeichenweise "Eingabe" immer nur #13#10 als Zeilenwechsel mit CR, aber er soll es auch anders können.

Das ist keine zeichenweise Eingabe; das Memo passt den Text mit der Funktion AdjustLineBreaks an.

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:
var strDaten: string;
strDaten := strDaten + Zeichen;
Memo1.Text := AdjustLineBreaks(strDaten);
[Nachtrag]
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;

bigg 31. Jul 2005 12:59

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

fkerber 31. Jul 2005 13:14

Re: Richedit/Memo "nachprogrammieren"
 
Zitat:

Zitat von Flocke
Zitat:

Zitat von fkerber
Man sieht also, dass diese Implementierung "Schrott" ist.

Eine ganz gewagte Aussage... Ich denke eher, dass sie einfach für deine Zwecke nicht passt.

Naja, ein LF ist eben ein LF und kein LF+CR, deswegen denke ich, dass die Implementierung nicht korrekt ist.

Zitat:

Zitat von Flocke
Zitat:

Zitat von fkerber
Es kann jetzt passieren, dass nur ein LF kommt, dann soll auch NUR ein LF gemacht werden, eben ohne CR (von CR steht dann da ja nix). Genauso soll aber auch ein CR behandelt werden, wenn nur ein CR kommt.

Was soll das Memo in den einzelnen Fällen den anders machen?

Wenn nur ein CR kommt z.B., dann soll eben auf Pos 0 der aktuellen Zeile gesprungen werden und ab dort die Zeichen hin.


Zitat:

Zitat von Flocke
Schon mal daran gedacht, Daten und Darstellung einfach zu trennen?

Delphi-Quellcode:
var strDaten: string;
strDaten := strDaten + Zeichen;
Memo1.Text := AdjustLineBreaks(strDaten);

Ich rede ja im Moment sowieso nur von der Darstellung.
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

xaromz 31. Jul 2005 13:25

Re: Richedit/Memo "nachprogrammieren"
 
Hallo,
Zitat:

Zitat von bigg
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

Ich hab mich ausführlich damit beschäftigt, ein bisschen mehr ist da schon nötig (z. B. Zeilenumbruch, Markierung, Geschwindigkeit usw.). Wie gesagt hab ich dafür fast eine Woche gebraucht, und die Zeit braucht man auch (Etwas Zeit hab ich natürlich auf meine Formatierungen verwendet, was hier ja nicht nötig ist).

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

fkerber 31. Jul 2005 13:27

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

bigg 31. Jul 2005 13:31

Re: Richedit/Memo "nachprogrammieren"
 
Zitat:

Und wie siehts mit markieren aus? Und kopieren, und einfügen??
Dafür gibt es die Unit Clipbrd.
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.

xaromz 31. Jul 2005 13:34

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

fkerber 31. Jul 2005 13:51

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

Flocke 31. Jul 2005 14:03

Re: Richedit/Memo "nachprogrammieren"
 
Zitat:

Zitat von fkerber
Naja, ein LF ist eben ein LF und kein LF+CR, deswegen denke ich, dass die Implementierung nicht korrekt ist.

Zitat:

Zitat von fkerber
Wenn nur ein CR kommt z.B., dann soll eben auf Pos 0 der aktuellen Zeile gesprungen werden und ab dort die Zeichen hin.

Jetzt verstehe ich langsam: du willst das gesamte nicht als Text interpretieren sondern eine Terminalausgabe simulieren. CR/LF, LF und CR sind für dich somit nicht Zeilenendekennzeichen sondern Steuerbefehle für den Ausgabecursor. Das sind doch zwei vollkommen unterschiedliche Dinge. Erwartest du von einem Memo etwa auch, dass nach "Text := 'ABC'#8;" in Text nur 'AB' drin steht weil #8 der Steuercode für Backspace ist? Mit "Text:=irgendwas" simulierst du doch keine Tasten!

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.

fkerber 31. Jul 2005 14:06

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

xaromz 31. Jul 2005 14:20

Re: Richedit/Memo "nachprogrammieren"
 
Hallo,

also eine Terminal-Ausgabe kann mein Edit auch nicht, da musst Du wohl doch alles puffern und den Puffer anpassen. Allerdings kann mein Edit einfügen/überschreiben, Du kannst also bei einem CR den Cursor an den Anfang der Zeile setzen und ab da einfach überschreiben.
Da mein Edit aber einen automatischen Zeilenumruch implementiert und nicht erst bei einem CR bzw. LF umbricht glaube ich nicht, dasss meine Komponente für Dich so richtig geeignet ist. Aber wenn Du willst kann ich Dir mal meine aktuelle Version posten (geht aber erst morgen, s. o.).

Gruß
xaromz

fkerber 31. Jul 2005 14:24

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Ja, poste mal, wär super!
Danke.

Ciao Frederic

bigg 31. Jul 2005 15:44

Re: Richedit/Memo "nachprogrammieren"
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich poste hier einfach mal eine kleine Demo.

- bisher funktioniert nur das vertikale Scrollen
- Dateien können geladen werden
- die Schriftart kann angepasst werden
- Aktuelle Zeilenangabe

fkerber 31. Jul 2005 20:56

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Super Sache, danke!

Hast du einen Ansatz zum markieren?


Ciao Frederic

bigg 31. Jul 2005 21:33

Re: Richedit/Memo "nachprogrammieren"
 
Ja, du benötigst zunächst einmal einen Anfangspunkt.
Der Punkt setzt sich aus der aktuellen Position der rechten Scrollbar
sowie den Koordinaten des Editors (Editor) zusammen.
Dann haben wir eine Koordinate.

fkerber 31. Jul 2005 21:36

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Ja....
Und dann?


Ciao Frederic

bigg 31. Jul 2005 22:00

Re: Richedit/Memo "nachprogrammieren"
 
... und drückst dann die linke maustaste (also onclick), ziehst die Maustaste wohin du willst, ermittelst den aktuellen punkt ueber mousemove und rufst dann malen auf. :)

fkerber 31. Jul 2005 22:05

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

aha, ok.

Jetzt zu meinem eigentlichen Problem nochmal zurück.
Das liegt ja nur indirekt in der Ausgabe eigentlich...

Problem ist ja folgendes, es wird jetzt eine Stringlist zeilenweise ausgegeben.
Angenommen, der ankommende "Text" sieht so aus:

Zitat:

123 #10 456
Dann müsste die Ausgabe ja eigentlich so aussehen:

Delphi-Quellcode:
123
   456
Nur, wenn in der Stringlist jetzt nur drinsteht:
[0] 123
[1] 456


Wie soll die das dann wissen/wie soll ich das wissen. Klar, es ist eine Frage, wie ich es in die Stringliste schreibe, aber wie soll ich das machen?


Ciao Frederic

marabu 31. Jul 2005 22:15

Re: Richedit/Memo "nachprogrammieren"
 
Hallo Frederic,

kleine Zwischenfrage: welche Bedeutung hat denn diese Ausgabe - du hast ja im opener gesagt, dass Eingabe kein Thema sei. Ist das sowas wie ein Monitor, der die auf dem Port eingehenden Daten mitschreibt? Wieviel willst du da mitschreiben, d.h. wie groß soll das mitgeschnittene Fenster sein - in Zeilen? Warum willst du in den mitgeschnittenen Daten markieren können?

Unter ganz bestimmten Randbedingungen wäre dann ein echtes Konsolfenster sinnvoll, das du auch als child window in deiner form halten könntest. Das Konsolfenster weiß schon von sich aus, wie es mit ASCII control umgehen muss...

Grüße vom marabu

fkerber 31. Jul 2005 23:16

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Konkret geht es darum, Ausgaben darzustellen, die mir ein kleiner fußballspielender Roboter (siehe Signatur) auf dem Com-Port sendet.

Eine Zeile sieht beispielsweise so aus:

Zitat:

Pos_x: 138, Pos_y: 248, hjgjh: 465, sadhaskjiu:456

Da fragt man sich ja jetzt eigentlich, wozu die ganzen Verrenkungen; mit nem Memo sollte das doch gehen.
Ja, geht es eigentlich, ABER wir haben Perfektionisten im Team :wink: und im Moment ein Terminal, das zwar sonst nix kann, aber CR und LF richtig interpretiert. Also soll das neue das bitte auch können.
(Das Terminal ist zwar OS, aber erstens C(++ ?) und zweitens sehr unübersichtlich)


So, dann noch was zum Konsolenfenster:
Habe eben mal eine neue Kosolenanwendung gemacht und dort mal getestet:
Nach meinen Tests wirds da auch nicht "richtig" gemacht, oder reden wir von unterschiedlichen Dingen?


Ciao Frederic

marabu 1. Aug 2005 08:06

Re: Richedit/Memo "nachprogrammieren"
 
Ich hatte zwar an eine GUI-Anwendung mit Konsolfenster als child window gedacht, aber von der Funktionalität her ist das egal. Von der Dokumentation her bin ich davon ausgegange, dass auch LF richtig interpretiert wird.

Zitat:

Zitat von Microsoft
Used with a console screen buffer handle to cause the system to perform the appropriate action for ANSI control characters that are written to a screen buffer. The backspace, tab, bell, carriage return, and linefeed characters are processed. A tab character moves the cursor to the next tab stop, which occurs every eight characters. A bell character sounds a short tone.

Als ich es eben untersuche stelle ich auch fest, dass LF so verarbeitet wird, als wäre es zusammen mit CR geschrieben worden.

Eines ist mir allerdings immer noch nicht klar. Welchen Sinn macht ein einzelnes LF (ohne CR) in deinem Datenstrom? Eine einwandfreie Umsetzung würde einen Zeilenwechsel unter Beibehaltung der Spalte verursachen. Wozu? Zur Ansteuerung von Bildschirmpositionen auf einem Terminal stehen in der Regel spezielle Steuersequenzen zur Verfügung.

marabu

Flocke 1. Aug 2005 08:20

Re: Richedit/Memo "nachprogrammieren"
 
Beim Begriff "Terminal" ist dann doch noch was eingefallen.

Bei der ICS-Suite von F. Piette (http://www.overbyte.be/) ist eine Komponente dafür dabei.
Zitat:

TEmulVT - ANSI terminal emulation (like a TMemo but with ANSI escape sequences interpretation).

marabu 1. Aug 2005 09:40

Re: Richedit/Memo "nachprogrammieren"
 
Bei Async Professional von TurboPower ist eine VT100 Terminal Komponente dabei - die sollte ein LF auch korrekt handhaben können.

marabu

xaromz 1. Aug 2005 11:17

Re: Richedit/Memo "nachprogrammieren"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich häng hier jetzt mal meine Edit-Komponente rein (Achtung: ist noch Baustelle), aber ich glaub nicht, dass Dir das groß weiterhilft, da das Ganze erstens sehr speziell für meine Bedürfnisse ist und zweitens eben ein (relativ) normales Memo ist und kein Terminal.
Ich hab leider keine Dokumentation dafür, nur ein paar Zeilen, wie man Formatierungen einfügen kann. Wenn Du das benutzen willst musst Du Dir eben die Verarbeitung von Steuerzeichen selbst basteln (Die Methode AddCharacter ist da evtl. ein guter Start).

Gruß
xaromz

fkerber 1. Aug 2005 17:12

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Danke für die Tipps!


Ciao Frederic

fkerber 5. Aug 2005 17:19

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Zitat:

Zitat von Flocke
Beim Begriff "Terminal" ist dann doch noch was eingefallen.

Bei der ICS-Suite von F. Piette (http://www.overbyte.be/) ist eine Komponente dafür dabei.
Zitat:

TEmulVT - ANSI terminal emulation (like a TMemo but with ANSI escape sequences interpretation).


Perfekt! Wunderbar!
Vielen Dank.


Ciao Frederic

alf.stefan 8. Aug 2005 09:48

Re: Richedit/Memo "nachprogrammieren"
 
Hallo zusammen

wenn man die Steuerzeichen #10#13 extra interpretieren will dann müsste das doch in etwa so aussehen

Delphi-Quellcode:
 curLine := Memo1.Lines.Count-1;
 if c = #10 then
 begin
    Memo1.Lines.Append(StringOfChar(#32,length(Memo1.Lines[curLine]));
 end
 else if c = #13 then
 begin
    Memo1.Lines.Delete(curLine);
    Memo1.Lines.Append('');
 end
 else Memo1.Text := Memo1.Text + c;
bei #10 wird in die nächste Zeile an die Position der vorigen gegangen
bei #13 wird die momentane Zeile gelöscht und an Position 1 gesprungen
sonst wird Memo1 Text weiter geschrieben.

Gruß
Stefan

fkerber 8. Aug 2005 12:26

Re: Richedit/Memo "nachprogrammieren"
 
Hi!

Nein, so wäre das nicht korrekt!
So wie ich das sehe fügst du Leerzeichen ein, oder? Das verändert ja wiederum den Inhalt.

Ciao Frederic

TeronG 8. Aug 2005 12:47

Re: Richedit/Memo "nachprogrammieren"
 
Also wenn ich so was basteln wollte würde ich wahrscheinlich erstmal die Daten separat "speichern" (eg. String/list) dann kannste mit denen jonglieren wie du willst .. z.b. bei CR den Cursor (separat merken ??) auf Zeilenstart stellen und dann alle ankommenden Zeichen den Rest überschreiben lassen :gruebel:
naja .. sollte eigentlich nicht allzu schwer sein :gruebel: ..

(PS: hab im Mittelteil des threats n bissl übersprungen kann also sein, daß der Vorschlag schon kam und abgewiesen wurde :roll:)

alf.stefan 8. Aug 2005 13:11

Re: Richedit/Memo "nachprogrammieren"
 
@fkerber

wenn es hier um die Darstellung im Memo geht sind doch die Spaces egal.
Das memo mag es glaube ich (was sie Darstellung angeht) nicht so gerne wenn da lauter #0 stehen.
Auserdem lassen sich die ja mit commaText auch wieder rausmachen.


Gruß

Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz