Delphi-PRAXiS

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 TreeView HintergrundProbleme unter XP (https://www.delphipraxis.net/31085-treeview-hintergrundprobleme-unter-xp.html)

DS_Azrael 4. Okt 2004 09:09


TreeView HintergrundProbleme unter XP
 
Moin,
Inzwischen funktioniert zwar (fast) alles mit dem TreeView, doch am Wochenende ist mir noch ein höchst ärgerliches Problem aufgefallen. Bei der Reaktion auf die Message WM_Paint wird ein
Delphi-Quellcode:
If (Message.Msg = WM_Paint ) then    
    begin    
    Rect:=TreeView1.Selected.DisplayRect(TRUE);    
    DC := GetDC( TreeView1.Handle );    
    SetBkMode(DC,TRANSPARENT);    
   with TreeView1.Canvas Do    
    begin    
     Brush.Color:= clyellow;    
     FillRect(Rect);    
     Font.Color:= clactivecaption;    
     TextOut(Rect.Left, Rect.Top, TreeView1.selected.text);    
     Font.Color:=clblack;    
    end;    
  end;
gemacht, allerdings erscheint das Bild nun unter WinXP im Vordergrund! Dass heisst der Baum ist nicht mehr zu sehen, was natürlich nicht so prickelnd ist.


Nachtrag: Ok - es liegt wohl doch nciht an der MessageRoutine, sondern der Fehler tritt vor allem auf, wenn ein Tooltip im TreeView angezeigt wird. Wird TreeView1.Tooltips auf FALSE gesetzt funktioniert das ohne Probleme.
Wie und wo ist denn das Ereignis/Message das/die ausgelöst wird, wenn ein Tooltp angezeigt wird?

DS_Azrael 4. Okt 2004 15:15

Re: TreeView HintergrundProbleme unter XP
 
Ok - Ich hab jetzt eine passende Systemnachricht gefunden

Delphi-Quellcode:
 If (Message.msg=WM_NOTIFY)  
   then TreeView1.refresh;
Allerdings führt das natürlich zu einem Flackern (Da gabs doch mal diesen Befehl um das schneller zu machen - wie war denn der?).

Das Problem, dass das Hintergrundbild über den Items liegt - kommt wohl daher dass Delphi bei einem Tooltipaufruf zwar dass HintergrundBild neu reinzeichnet aber nicht die Items (Um das zu unterbinden hätte ich jetzt obigen Code benutzt...) - Allerdings ist das unsinnig. Gibt es vielleicht eine Möglichkeit, das Zeichnen des Bildes zu unterbinden?


Danke schonmal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.

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