AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit-Formatierung

Ein Thema von faux · begonnen am 26. Apr 2004 · letzter Beitrag vom 28. Apr 2004
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

RichEdit-Formatierung

  Alt 26. Apr 2004, 19:28
Hallo...
ich hab mir jetzt alles mit der Delphisuche gesucht was ich unter Hier im Forum suchenRichEdit gefunden habe, aber ich kappiers nicht...

wen ich die folgende funktion aufrufe, funktioniert das zwar, aber es wird nur der erste übereinstimmende text gefärbt:

Delphi-Quellcode:
procedure TForm1.Colorizen(RichEdit: TRichEdit; const Msg: String; Color: TColor);
begin
  //RichEdit.Lines.Add(Msg);
  RichEdit.SelStart := Pos(Msg, RichEdit.Text) - 1;
  RichEdit.SelLength := Length(Msg);
  RichEdit.SelAttributes.Color := Color;
  RichEdit.SelLength := 0;
end;
bitte um hile, ich will das JEDER text (in der Prozedur Msg) im ganzen RichEdit gefärbt wird....
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: RichEdit-Formatierung

  Alt 26. Apr 2004, 19:32
Pos sucht dir das erste Vorkommen von Msg. Wenn du alle färben willst, musst du es wahrscheinlich so machen:
Delphi-Quellcode:
for i := 1 to Length(RichEdit.Text)-Length(Msg)+1 do
begin
  if Copy(RichEdit.Text,i,Length(Msg) = Msg then
  begin
    RichEdit.SelStart := i-1;
    RichEdit.SelLength := Length(Msg);
    RichEdit.SelAttributes.Color := Color;
    RichEdit.SelLength := 0;
  end;
end;
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#3

Re: RichEdit-Formatierung

  Alt 26. Apr 2004, 19:38
Oder Schau dir mal PosEx (siehe OH) an, damit kann man ab 'ner bstimmten Position suchen also wenn was gefunden wurde, dann einfach nach dieser Position weitersuchen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: RichEdit-Formatierung

  Alt 26. Apr 2004, 20:41
Sollte dann in etwa so aussehen
Delphi-Quellcode:
procedure TForm1.Colorizen(RichEdit: TRichEdit; const Msg: String; Color: TColor);
var LStartpos, LFoundpos: Integer;
begin
  LStartpos := 1;
  repeat
    LFoundpos := PosEx(Msg, RichEdit.Text, LStartpos);
    if LFoundpos > 0 then
    begin
      RichEdit.SelStart := PosEx(Msg, RichEdit.Text, LStartpos) - 1;
      RichEdit.SelLength := Length(Msg);
      RichEdit.SelAttributes.Color := Color;
      RichEdit.SelLength := 0;
      LStartpos := LFoundpos + length(Msg);
    end;
  until LFoundpos <= 0;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: RichEdit-Formatierung

  Alt 27. Apr 2004, 18:58
Zitat von alcaeus:
Delphi-Quellcode:
for i := 1 to Length(RichEdit.Text)-Length(Msg)+1 do
begin
  if Copy(RichEdit.Text,i,Length(Msg) = Msg then //Inkompatible Typen: 'String' und 'Integer'
  begin
    RichEdit.SelStart := i-1;
    RichEdit.SelLength := Length(Msg);
    RichEdit.SelAttributes.Color := Color;
    RichEdit.SelLength := 0;
  end;
end;
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#6

Re: RichEdit-Formatierung

  Alt 27. Apr 2004, 19:44
Da fehlt nur 'ne Klammer

Code:
for i := 1 to Length(RichEdit.Text)-Length(Msg)+1 do
begin
  if Copy(RichEdit.Text,i,Length(Msg)[color=red][b])[/b][/color] = Msg then
  begin
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: RichEdit-Formatierung

  Alt 28. Apr 2004, 12:35
dies bezüglich hätte ich auch noch ne frage...
wenn ich in nem String mehrere markierungen habe ([ und ]) soll der text zwischen diesen klammern
rot geschrieben werden... das funkt soweit auch.. aber.. wie bekomm ich das hin das mein Prog das
bei allen Klammern macht ?

bei den ersten Klammern hab ich das schon mit Pos('[',msg) und Pos(']',msg) erledigen können aber
wie muss ich weiter machen ?

Für das bessere Verständnis:

Guten Tag [anrede] [vorname] [nachname]

soll zu

Guten Tag [anrede] [vorname] [nachname]

werden.

THX 4 HELP
p0w3r5tr34m3r
Florian Cülter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#8

Re: RichEdit-Formatierung

  Alt 28. Apr 2004, 12:47
Nimm einfach PosEx, damit kann man ab 'ner bestimmten Position suchen.

Für PosEx gibt es hier im Forum auch ein paar nette Beispiele.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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