AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi VirtualDrawTree: Bereich rechts von letzter Spalte zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualDrawTree: Bereich rechts von letzter Spalte zeichnen

Ein Thema von s.h.a.r.k · begonnen am 21. Apr 2010 · letzter Beitrag vom 5. Mai 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

VirtualDrawTree: Bereich rechts von letzter Spalte zeichnen

  Alt 21. Apr 2010, 20:09
Hallo zusammen,

schaut euch einfach den Screenshot an, da seht ihr das Problem eigentlich auf Anhieb. Und zwar zeichne ich in der OnDrawNode einen Gradient, wenn das Item selektiert ist, nur ist dieser leider auf die einzelnen Zellen beschränkt. Ich habe bisher noch keine Möglichkeit gefeunden, wie ich rechts von der letzten Spalte zeichnen kann. Ich hoffe mir kann jemand helfen

// edit

Natürlich den Screenshot vergessen... -.-
Miniaturansicht angehängter Grafiken
screenshot_210.png  
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 21. Apr 2010, 22:34
Hallo Armin,

vielleicht geht es so:

Delphi-Quellcode:
procedure TDemoForm.VDTBeforeItemErase(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
  Node: PVirtualNode; ItemRect: TRect; var ItemColor: TColor; var EraseAction: TItemEraseAction);
begin
  ItemRect.Left := 0;
  ItemRect.Right := Sender.ClientWidth;
  {GraphUtil.}GradientFillCanvas (TargetCanvas, clAqua, clYellow, ItemRect, gdHorizontal);

  EraseAction := eaNone;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 21. Apr 2010, 22:38
Danke, werde es mal testen, aber was hat das mit dem Löschen zu tun?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 27. Apr 2010, 12:58
Zitat von Hawkeye219:
Hallo Armin,

vielleicht geht es so:

Delphi-Quellcode:
procedure TDemoForm.VDTBeforeItemErase(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
  Node: PVirtualNode; ItemRect: TRect; var ItemColor: TColor; var EraseAction: TItemEraseAction);
begin
  ItemRect.Left := 0;
  ItemRect.Right := Sender.ClientWidth;
  {GraphUtil.}GradientFillCanvas (TargetCanvas, clAqua, clYellow, ItemRect, gdHorizontal);

  EraseAction := eaNone;
end;
Gruß Hawkeye
Naja, es funktionier nicht nur vielleicht, sondern es tut wirklich. Aber warum eigentlich?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 27. Apr 2010, 16:51
Zitat von s.h.a.r.k:
Naja, es funktionier nicht nur vielleicht, sondern es tut wirklich. Aber warum eigentlich?
Das Ereignis OnBeforeItemErase wird aufgerufen, bevor ein Knoten gezeichnet wird. Das "erase" bezieht sich hier auf den Hintergrund. Du kannst in der Behandlungsroutine eine bestimmte Hintergrundfarbe für den Knoten festlegen (eaColor), den Hintergrund selbst zeichnen (eaNone) oder dem Tree das Zeichnen überlassen (eaDefault).

In der Dokumentation zum Virtual Treeview werden die paint cycles and stages genauer beschrieben.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 27. Apr 2010, 17:09
Absolute klasse, danke
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 28. Apr 2010, 02:27
@Hawkeye219: Hm... Irgendwie scheint das ganze aber Probleme zu verursachen Wenn ich deine Lösung nutze, so wird die Methode *immer* ausgeführt, auch wenn eigentlich nichts gezeichnet werden müsste. Somit habe ich (auf einem Core) eine CPU-Auslastung von 100%, was natürlich das Programm ungemein verlangsamt.

Ich bin leider erst gerade eben drauf gekommen, da ich diesen "Überhang" nur sehr selten zu sehen bekomme, eben nur dann, wenn ich die Anwendung auf Fullscreen setze.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 28. Apr 2010, 16:27
Zitat von s.h.a.r.k:
Wenn ich deine Lösung nutze, so wird die Methode *immer* ausgeführt, auch wenn eigentlich nichts gezeichnet werden müsste. Somit habe ich (auf einem Core) eine CPU-Auslastung von 100%, was natürlich das Programm ungemein verlangsamt.
Ich kann das beschriebene Verhalten nicht nachstellen, und es dürfte eigentlich auch nicht am gezeigten Code liegen. Irgendetwas in deinem Programm scheint das Neuzeichnen des Controls bzw. einzelner Knoten zu erzwingen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#9

Re: VirtualDrawTree: Bereich rechts von letzter Spalte zeich

  Alt 5. Mai 2010, 01:54
jo, irgendwas hab ich da verkehrt gemacht, nun klappt alles
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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