Delphi-PRAXiS

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: farbigen Text finden und ersetzen (https://www.delphipraxis.net/43042-richedit-farbigen-text-finden-und-ersetzen.html)

NicNacMan 27. Mär 2005 23:42


RichEdit: farbigen Text finden und ersetzen
 
hi @ all,

ich habe ein richedit, in dem ich einen farbig dargestellten phpcode habe und jetzt will ich alle zb blau dargestellten textstellen ersetzen, aber wie bekomme ich die stellen raus?
ich probiers jetzt schon den ganzen tag, mit selstart, selattributes, ... aber richtig gut funzt das nicht.

das prog soll später phpcode als htmlformatierten code ausgeben, der, wenn man ihn parst wieder so aussieht, wie der originale phpcode (farbig).
oder kennt jemand ne bessere möglichkeit, oder sogar n tool, was das schon kann?

thx 4 help, nicnacman

Christian Seehase 28. Mär 2005 00:19

Re: RichEdit: farbigen Text finden und ersetzen
 
Moin NicNacMan,

da Du es ja schon mit SelAttributes versucht hast:
Wie?
Damit müsste es eingentlich funktionieren.

NicNacMan 28. Mär 2005 00:39

Re: RichEdit: farbigen Text finden und ersetzen
 
ich bin mit einer schleife alle zeichen durchgegangen, und hab geguckt welche farbe sie haben, dann hab ich das zeichen davor geprüft, und wenn das ne andere farbe hatte, hatte ich den anfang des zb blauen textes.
und das ganze dann nochmal, um das ende rauszufinden, aber das is nicht wirklich optimal, da ich bei textstellen, die am zeilenanfang bzw -ende sind probleme hatte, weil sie nicht erkannt wurden, ...
ich habs dann aufgegeben, als ich nach langem probieren gerademal den anfang des erste vorkommens des blauen textes hatte, und das ja noch mit mehreren anderen farben machen muss, von dem fontstyle (den ich ja auch noch berücksichtigen wollte) mal ganz zu schweigen ^^

das war mein erster versuch (funzt in den meisten fällen, aber leider nicht immer):
Delphi-Quellcode:
function findbeginning(textcolor: String; start: Integer): Integer;
var
  i: Integer;
begin
  result := -1;
  with Form1.RichEdit1 do
    for i := start to Pred(Length(Text)) do
      begin
        SelStart := i;
        if (ColorToString(SelAttributes.Color) = textcolor) then
          begin
            SelStart := Pred(i);
            if (i <= 0) or (ColorToString(SelAttributes.Color) = textcolor) then
              begin
                result := i;
                exit;
              end;
          end;
      end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz