![]() |
TRichEdit Sonderzeichen ein-/ausblenden
Moin Zusammen.
Ich möchte gerne in einem TRichEdit die "nicht druckbaren Sonderzeichen" (so heisst es wohl in Word) ein- bzw. ausblenden. Also alle Leezeichen im Text sollen als "Punkt" dargestellt werden, TABs als ">" und CR als "CHAR(182)". Das kann im Prinzip so ziemlich jedes Tool (TextPad, NotePad++ usw.). Der Text wird in diesem Falle nicht manuell erfasst, sondern es geht um das Anzeigen einer ASCII Schnittstellendatei, die bereits vorliegt und einfach nur in die TRichEdit eingelesen wird. Als möglichen Lösungsansatz sehe ich: Den Text von oben nach unten durchlesen und die Spezialzeichen durch "anzeigbare" Zeichen zu ersetzen. Und beim ausblenden dan umgekehrt. Beispiel: Dieses ist ein Satz. Dieses░ist░ein░Satz. Ist mein Lösungsweg der richtige oder gibt es einen eleganteren Weg, diese Zeichen im TRichEdit sichtbar zu machen? Vielen Dank für Eure Hilfe - und einen schönen Tag noch! Gruß Rolf |
Re: TRichEdit Sonderzeichen ein-/ausblenden
Soll der Text editiert werden können?
Wenn nicht, dann kannst du (da du ja ein unicodefähiges Delphi nutzt) diese Zeichen auch "übersetzen". Bei ASCII sind das ja nur etwa 34 Zeichen. Im Unicodezeichenraum gibt es auch andere sichtbare Zeichen, welche die Symbole der gewünschten Steuerzeichen darstellen. |
Re: TRichEdit Sonderzeichen ein-/ausblenden
Hi himitsu,
nein, der Text wird nicht editiert, ich möchte ja eingetlich nur, dass die Zeichen angezeigt werden. Hintergrund: Ich lese eine ASCII Datei ein, die eine Schnittstelle darstellt. Also muss beim Aufbau der Datei gewährleistet werden, dass die Definition eingehalten wird: Feld1 ist 5 Zeichen lang, Feld2 ist 19 Zeichen lang, Feld3 ist 1 Zeichen lang .. usw. Da die gesammte Definition aus 285 Feldern besteht (der Satz ist 1687 Zeichen lang), soll dieses Programm den Inhalt einfach nur zeilenweise anzeigen. Da per Vereinbarung Leerstellen als ' ' (Space) in die Datei geschreiben werden, kann man diese nur schlecht sehen ... und darum gehts im Prinzip. Ich hoffe, dass das zur Erklärung beiträgt. |
Re: TRichEdit Sonderzeichen ein-/ausblenden
Schade: In meinem XP gibt es nur die Schriftart "Lucida Sans Unicode", welche diese Zeichen schon kennt,
aber in XP dürften viele Schriftarten auch nur UCS 4.x oder gar 3.x kennen, wärend diese Zeichen erst in UCS 5.2 (Unicode Standard) eingeführt wurden. [edit] in Windows 7 sind auch nur "Lucida Sans Unicode" und "Segoe UI Symbol" auf den Stand von UCS 5.2 und enthalten auch noch den entsprechenden Zeichenbereich. Laut der Tabelle ![]()
Delphi-Quellcode:
Funktionieren tut es so schonmal
Function TextToView(Const S: AnsiString): String;
Var i: Integer; Begin Result := S; For i := Length(Result) downto 1 do Case Result[i] of #0..#31: Result[i] := Char(Ord(Result[i]) or $2400); ' ': Result[i] := #$00B7; {oder #$2420} 127: Result[i] := #$2421; End; End;
Delphi-Quellcode:
Also entweder schauen, daß du eine passende Schriftart findest, welche diese Zeichen darstellen kann
Function TextToView(Const S: AnsiString): String;
Var i: Integer; Begin Result := S; For i := Length(Result) downto 1 do Case Word(Result[i]) of 0..31: Result[i] := Char(Word(Result[i]) or $2400); Ord(' '): Result[i] := Char($00B7); {oder #$2420} 127: Result[i] := Char($2421); End; End; Function ViewToText(S: String): AnsiString; Var i: Integer; Begin For i := Length(S) downto 1 do Case Word(Result[i]) of $2400..$241F: S[i] := Char(Word(S[i]) and $00FF); $00B7: S[i] := ' '; $2421: S[i] := Char(127); End; Result := S; End; oder du suchst dir ein paar andere Zeichen aus (Vorteil, du mußt dich um die Darstellung nicht kümmern) oder du fügst Bilder in den Text ein, bzw. zeichnest den Text selber und malst dann was Passendes für die entsprechenden Zeichen hin. [add] Zitat:
Delphi-Quellcode:
Diese Zeichen dürften sogar auch direkt möglich sein:
Function TextToView(Const S: AnsiString): String;
Var i: Integer; Begin Result := S; For i := Length(Result) downto 1 do Case Result[i] of #09: Result[i] := '>'; // oder besser #$00BB (») ? #10: Result[i] := #$00B6; ' ': Result[i] := #$00B7; End; End;
Delphi-Quellcode:
* #09: Result[i] := '»';
#10: Result[i] := '¶'; ' ': Result[i] := '·'; |
Re: TRichEdit Sonderzeichen ein-/ausblenden
Liste der Anhänge anzeigen (Anzahl: 2)
In der Anlage mal ein Bild mit und ein Bild ohne Sonderzeichen - schon klasse! Dann wird schon deutlich, dass mit eingeblendeten Sonderzeichen die Prüfung auf Stellengenauigkeit einfacher ist!
Vielen Dank noch mal Rolf |
AW: TRichEdit Sonderzeichen ein-/ausblenden
Hallo,
ich habe ein ähnliches Problem wie bereits in diesem Thread beschrieben. Auch ich möchte Sonderzeichen (Leerzeichen, Zeilenschaltung sowie Absatzmarke) in einer TRichEdit-Komponente wie in Word sichtbar machen. Derzeit ersetze ich auch die Leerzeichen manuell mit deinem ASCII 183 (Punkt auf mittlerer Zeilenhöhe). Das Problem was dabei auftritt ist, daß es mir den Zeilenumbruch durcheinander bringt, da anscheinend dieser Punkt mehr Platz als das eigentliche Leerzeichen einnimmt. Mir gehen diesbezüglich langsam die Ideen aus. Hat hier evtl. noch jemand einen Lösungsansatz? Zum Programm: Dieses dient zum Ablegen von Tastschreibprüfungen, wo Prüflinge eine Vorlage zeilengleich oder auch im Fließtext abtippen müssen. Dieser Text soll natürlich am Bildschirm genauso aussehen wie auf der Vorlage bzw. einem anschl. Ausdruck. Die Zeilenbreite synchronisiere ich darüber, daß ich das TRichEdit-Feld auf 21 cm breite einstelle. Nicht schön, aber funktioniert. Bis auf den Umstand, wenn ich die Leerzeichen anzeigen will. Zeilen- und Absatzschaltung würde ich auch gern anzeigen, hab ich aber noch nicht drin, da mir die Leerzeichen noch Probleme bereiten. Ich würde mir über Ideen hier freuen. Vielen Dank im Voraus. Achso, ich nutze derzeit Delphi 7. |
AW: TRichEdit Sonderzeichen ein-/ausblenden
Zum einen kannst Du über die Fontauswahl eine Steuerung vornehmen, zum anderen schaust Du einmal in die TTF-Doku (
![]() Gruß K-H |
AW: TRichEdit Sonderzeichen ein-/ausblenden
Hallo,
muss es unbedingt TRichEdit sein? Wenn nein, dann schau Dir bitte mal ![]() |
AW: TRichEdit Sonderzeichen ein-/ausblenden
Hallo,
ich wollte mich erstmal für eure Antworten bedanken. Und nein, es muss nicht TRichEdit sein. Vorgabe für das Programm ist, MS-Word unabhängig. Man soll in dem Textfeld einen Text eingeben in einer bestimmten Zeit eingeben. Anschläge und Rechschreibung sind relevant auch, wenn keine Autokorrektur gewünscht ist, denn dies Programm soll einfach für Tastschreibübungen/Prüfungen (Blind schreiben) genutzt werden. Manipulation mit STRG-C /-V usw. fange ich schon ab. Ich versuche derzeit die SynEdit-kompnente einzubauen. Hoffe es funktioniert. Gruß Micha |
AW: TRichEdit Sonderzeichen ein-/ausblenden
So, hab die Synedit-Komponente jetzt eingebaut.
Gleich auch mit SysEditPrint. Sieht soweit alle sehr gut aus. Gefällt mir auch gut die Komponente. Aber noch ne Frage: Kann man die Steuerzeichen auch mit ausdrucken? Also ich kann die in der Anzeige super an und ausschalten. Zeigt sogar das Absatzzeichen an. Leider unterscheidet es nicht nicht von der einfachen Zeilenschaltung (SHIFT + ENTER). Aber das ist erstmal okay, hoffe ich. Allerdings druckt er die Steuerzeichen nicht mit aus, obwohl ich die an hatte. Geht das auch? Achso, noch was, wie ist denn die 80 bei RightEdge zu interpretieren. Was für ein Wert ist das? Pixel sind's nicht und Zentimeter auch nicht. Nochmals herzlichen Dank. Hätte ich die Komponente nur schon früher gekannt, hätte vieles erleichtert. Bislang war mir SynEdit nur als kompletter Editor nicht als Komponente bekannt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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