Delphi-PRAXiS
Seite 3 von 3     123   

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 Suchergbenisse farblich hinterlegen (TSynMemo) (https://www.delphipraxis.net/139460-suchergbenisse-farblich-hinterlegen-tsynmemo.html)

nahpets 14. Sep 2009 09:22

Re: Suchergbenisse farblich hinterlegen (TSynMemo)
 
Hallo,
Zitat:

Zitat von RWarnecke
Hallo zusammen, die Funktion von Hawkeye funktioniert jetzt bestens. Ich habe Sie für mein Programm angepasst. Um mit den normalen SearchEngines für SynMemo zu arbeiten, habe ich noch keine Möglichkeit gefunden. Aber ich habe das Problem mit der Groß- und Kleinschreibung so gelöst, dass ich im Vergleich alles auf UpperCase stelle. Jetzt bleibt lediglich nur noch die Frage, wie ich die Schriftart des Wortes erkennen kann um diese dann mit Canvas entsprechend zeichnen zu können. Denn jetzt ist es so, dass bei Kommentaren das hinterlegte Word von kursiv in normal gestellt wird.

GetHighlighterAttriAtRowCol(BufferCoord(SearchEngi ne.Results[j], i + 1),Token,Attri); liefert uns die gewünschten Informationen.
Delphi-Quellcode:
procedure TFrameEditor.SynEditPaint(Sender: TObject; ACanvas: TCanvas);
var
  i        : Integer;
  j        : Integer;
  P        : TPoint;
  Token    : String;
  Attri    : TSynHighlighterAttributes;
begin
  with SynEdit do begin
    // Ist keine Suchmaschine zugewiesen, raus, dann können wir uns das sparen.
    If Not Assigned(SearchEngine) then Exit;
    If SearchEngine.Pattern = '' then Exit;
    ACanvas.Brush.Color := clYellow;
    ACanvas.Brush.Style := bsSolid;
    // Die Suchbegriffe werden nur im sichtbaren Bereich hervorgehoben,
    // spart bei großen Dateien viel Zeit.
    for i := TopLine - 1 to TopLine + LinesInWindow do begin
      SearchEngine.FindAll(Lines[i]);
      for j := 0 to SearchEngine.ResultCount - 1 do begin
        P := RowColumnToPixels(BufferToDisplayPos(BufferCoord(SearchEngine.Results[j], i + 1)));
        GetHighlighterAttriAtRowCol(BufferCoord(SearchEngine.Results[j], i + 1),Token,Attri);
        Try
          ACanvas.Font.Style := Attri.Style;
        except
          on e : Exception do ACanvas.Font := Font;
        end;
        ACanvas.TextOut(P.X, P.Y, SearchEngine.Pattern);
      end;
    end;
  end;
end;

RWarnecke 14. Sep 2009 17:21

Re: Suchergbenisse farblich hinterlegen (TSynMemo)
 
Hallo Stephan,

erstmal ein ganz dickes Lob für Deine Arbeit. :thumb: Ich habe viel aus Deinen geposteten Beispielen gelernt. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 Uhr.
Seite 3 von 3     123   

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