Einzelnen Beitrag anzeigen

Bjoerk

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

RichEdit markiert nicht mehrere unterschiedliche Einträge.

  Alt 30. Jun 2014, 21:43
Ich wollte mehre verschiedene Wörter in einem RichEdit markieren. "Er" macht aber immer nur das erste Suchwort (zwar im ganzen Text), aber keine weiteren? Gibst da irgendeinen Trick? (Nur falls Zeit und Lust so während dem Fußball)

Delphi-Quellcode:
function TFindSourceMainForm.RichEditPos(const S: string): integer;
begin
  if WholeWordsCheckBox.Checked then
    Result := TStrUtils.WordPos(FSubStr, S)
  else
    Result := TStrUtils.Pos(FSubStr, S);
end;

procedure TFindSourceMainForm.HighlightResults;
var
  I, J, APos, ACount, K, SubStrCount: Integer;
  ARichEdit: TRichEdit;
begin
  for I := 0 to PageControl.PageCount - 1 do
  begin
    ACount := 0;
    ARichEdit := RichEdit(I);
    ARichEdit.Lines.BeginUpdate;
    try
      if GraphicObjectTypesCheckBox.Checked then
        SubStrCount := FGraphicObjectTypes.Count
      else
        SubStrCount := 1;
      for K := 0 to SubStrCount - 1 do // ***
      begin
        if GraphicObjectTypesCheckBox.Checked then
          FSubStr := FGraphicObjectTypes[K];
        for J := 0 to ARichEdit.Lines.Count - 1 do
        begin
          APos := RichEditPos(ARichEdit.Lines[J]);
          if APos > 0 then
          begin
            ARichEdit.SelStart := ACount + APos - 1;
            ARichEdit.SelLength := Length(FSubStr);
            ARichEdit.SelAttributes.Color := clBlack;
            ARichEdit.SelAttributes.Style := [fsBold];
          end;
          ACount := ACount + Length(ARichEdit.Lines[J]) + 2; // 2 = Zeilenumbruch;
          if FCancel then
            Exit;
        end;
      end;
    finally
      ARichEdit.Lines.EndUpdate;
      ARichEdit.SelStart := 0;
      ARichEdit.SelLength := 0;
    end;
  end;
end;
  Mit Zitat antworten Zitat