Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Suchergbenisse farblich hinterlegen (TSynMemo)

  Alt 30. Aug 2009, 16:09
Hallo Rolf,

eine Möglichkeit wäre es, die Fundstellen in der Behandlungsroutine für das Ereignis OnPaintTransient einzufärben:

Delphi-Quellcode:
procedure TForm1.EditorPaintTransient (Sender: TObject; Canvas: TCanvas; TransientType: TTransientType);
const
  KEY = 'Suchbegriff';
var
  i, k: Integer;
  s: string;
  DP: TDisplayCoord;
  P: TPoint;
begin
  for i := Editor.TopLine to Editor.TopLine + Editor.LinesInWindow do
    begin
      s := Editor.Lines[i - 1];

      k := Pos(KEY, s);
      while (k > 0) do
        begin
          DP := Editor.BufferToDisplayPos({SynEditTypes.}BufferCoord(k, i));
          P := Editor.RowColumnToPixels(DP);

          Canvas.Brush.Color := clYellow;
          Canvas.Font.Color := clRed;
          Canvas.TextOut (P.X, P.Y, KEY);

          k := PosEx(KEY, s, k + Length(KEY));
        end;
    end;
end;
Der Code zeigt nur die ungefähre Vorgehensweise. Beim Suchen wird auf exakte Groß-/Kleinschreibung geachtet, und ein Suchbegriff darf sich nicht über mehrere Zeilen erstrecken.

Gruß Hawkeye
  Mit Zitat antworten Zitat