Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RichEdit markiert nicht mehrere unterschiedliche Einträge.

  Alt 1. Jul 2014, 09:11
Wenn du magst kannst du ja mal das durchlaufen lassen und kur Bescheid geben ob das auch für > D2007 jeht?. Thanx!
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FSelList: TStringList;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Highlight(RichEdit: TRichEdit;
  SelList: TStrings; SelColor: TColor; SelStyle: TFontStyles);
var
  I, J, Pos, Index: Integer;
begin
  RichEdit.Lines.BeginUpdate;
  try
    Index := 0;
    for I := 0 to RichEdit.Lines.Count - 1 do
    begin
      for J := 0 to SelList.Count - 1 do
      begin
        Pos := PosEx(SelList[J], RichEdit.Lines[I], 1);
        while Pos > 0 do
        begin
          RichEdit.SelStart := Index + Pos - 1;
          RichEdit.SelLength := Length(SelList[J]);
          RichEdit.SelLength := Length(SelList[J]);
          RichEdit.SelAttributes.Color := SelColor;
          RichEdit.SelAttributes.Style := SelStyle;
          Pos := PosEx(SelList[J], RichEdit.Lines[I], Pos + 1);
        end;
      end;
      Index := Index + Length(RichEdit.Lines[I]) + Length(sLineBreak);
    end;
  finally
    RichEdit.Lines.EndUpdate;
    RichEdit.SelStart := 0;
    RichEdit.SelLength := 0;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.Font.Color := clLtGray;

  RichEdit1.Lines.Add('+++ Liveticker Deutschland gegen Algerien +++');
  RichEdit1.Lines.Add('Löw ist restlos bedient - wie reagiert er?');
  RichEdit1.Lines.Add('Deutschland, der klare Favorit im WM-Achtelfinale? Denkste!');
  RichEdit1.Lines.Add('Algerien ist überlegen, hat viele Großchancen.');
  RichEdit1.Lines.Add('Deutschland spielt unsicher und konfus.');
  RichEdit1.Lines.Add('Löw ist restlos bedient - hat er ist einen Plan?');
  RichEdit1.Lines.Add('Verfolgen Sie die Partie im Liveticker.');

  FSelList.Clear;
  FSelList.Add('Löw');
  FSelList.Add('ist');
  FSelList.Add('Liveticker');

  Highlight(RichEdit1, FSelList, clBlack, [fsBold]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FSelList := TStringList.Create;
  // RichEdit1.HideSelection := false;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FSelList.Free;
end;
  Mit Zitat antworten Zitat