![]() |
Wie verhindert man das FocusRect bei einem TTreeNode?
Ich hab schon alles probiert was mir so einfällt. Ein doppeltes DrawFocusRect (da XOR-Farbe), ein FillRect darüber usw. Sogar in die VCL-Quellen vom TCustomTreeView hab ich geschaut aber nix gefunden. Hat jemand eine Idee?
|
Re: Wie verhindert man das FocusRect bei einem TTreeNode?
Die Allgemeinheit deiner Fragestellung lässt viele Lösungen zu. Beispielsweise verschwindet das Fokus-Rechteck, wenn du den selektierten Knoten auf nil setzt. Vielleicht solltest du die Randbedingungen etwas genauer beschreiben.
PS: Eine sehr filigrane Steuerung ermöglicht übrigens das Ereignis OnAdvancedCustomDrawItem(). Frohe Ostern marabu |
Re: Wie verhindert man das FocusRect bei einem TTreeNode?
Ich verwende derzeit OnCustomDrawItem um einen andersfarbigen Balken für selektierte Knoten zu zeichnen. Dabei bin ich auf verschiedene Probleme gestoßen. Wenn ich z.B. das NodeRect verwende das über die gesamte Client-Breite vom TreeView geht (also GetNodeRect(FALSE) ) und dabei ShowLines vom TreeView TRUE ist, übermalt das System den von mir gezeichneten Hintergrund im Bereich der Linien. Also hab ich die Linien eben abgeschaltet, ebenso die Node-Buttons.
Das FocusRect ist jetzt das letzte Problem. Scheinbar wird das erst gezeichnet wenn OnCustomDrawItem schon abgearbeitet ist.
Delphi-Quellcode:
Das Hintergrund-Rechteck rücke ich deswegen um 34 Pixel nach links weil ich Images und StateImages für jeden Node verwende. Der Hintergrundbalken soll die beiden Images noch mit umfassen.
procedure TForm1.treProductsCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var Rect1, Rect2: TRect; BackColor: TColor; begin if Node.StateIndex = 3 then begin BackColor:= $00DCC2B9; Rect1:= Node.DisplayRect(TRUE); Rect2:= Node.DisplayRect(FALSE); Rect1.Right:= Rect2.Right; Rect1.Left:= Rect1.Left - 34; with treProducts.Canvas do begin Brush.Color:= BackColor; FillRect(Rect2); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr. |
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