![]() |
VirtualStringTree ; ist Knoten sichtbar?
Hallo!
Wahrscheinlich ist es ganz einfach, aber ich finde es nicht... also, ich habe Knoten in meinem VST, die wiederum Kindknoten bekommen sollen. Durch die Beschriftung der Kindknoten möchte ich Informationen anzeigen lassen, wenn der Elternknoten expandiert ist. Nun ändert sich die Menge der darzustellenden Informationen und damit die Anzahl der Kindknoten aber sehr häufig, außerdem gibt es sehr viele Knoten die Informationen in ihren Kindknoten anzeigen wollen. Daher ist es nicht ratsam, bei Änderungen der Informationen auch sofort die Struktur der Kindknoten zu aktualisieren. Ich möchte das Problem nun so lösen, dass die Struktur der Kindknoten nur dann aktualisiert wird, falls der dazugehörige Elternknoten gerade im VST sichtbar ist (unter Sichtbarkeit verstehe ich hier nicht die Eigenschaft 'Visible', sondern ganz einfach ob der Knoten im Zeichenbereich des VST liegt). Wie kann ich abfragen, ob ein Knoten derzeit angezeigt wird? |
Re: VirtualStringTree ; ist Knoten sichtbar?
Hallo,
falls es dir nur um die Behandlung der Ereignisse OnGetText etc. geht - das regelt die VST-Komponente selbst. Die Ereignisse werden nur ausgelöst, wenn es wirklich notwendig ist. Unabhängig davon kannst du jederzeit die Sichtbarkeit eines Knotens mit der folgenden Funktion überprüfen:
Delphi-Quellcode:
Gruß Hawkeye
function IsTreeNodeVisible (aTree: TBaseVirtualTree; aNode: PVirtualNode): Boolean;
var R : TRect; begin if ((aTree = nil) or (aNode = nil)) then Result := False else begin R := aTree.GetDisplayRect(aNode, -1, False); Result := IntersectRect(R, aTree.ClientRect, R); end; end; |
Re: VirtualStringTree ; ist Knoten sichtbar?
Zitat:
Allerdings kann es aber auch sein, dass die Objekte einfach so andere Informationen darstellen müssen. Dann könnte ich zwar ohne weiteres Nachfragen die Kindknotenstruktur des zum Objekt gehörenden VST-Knoten ändern - aber das sollte ja eigentlich erst geschehen, wenn der VST-Knoten sichtbar wird (= wenn OnGetText erneut aufgerufen wird). Und das war der Haken - ist der Knoten bereits sichtbar, wird keine Ereignismethode getriggert. Die Kindknotenstruktur wird folglich nicht aktualisiert, und die dargestellten Informationen sind veraltet. -------- Aber Dein Code löst das Problem nun - tausend Dank dafür! :-D , ich habe mich in der Doku/im Code zum VST schon halb tot gesucht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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