AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree ; ist Knoten sichtbar?

Ein Thema von drchaos · begonnen am 29. Jul 2007 · letzter Beitrag vom 29. Jul 2007
Antwort Antwort
drchaos

Registriert seit: 15. Jun 2007
13 Beiträge
 
#1

VirtualStringTree ; ist Knoten sichtbar?

  Alt 29. Jul 2007, 02:15
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?
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: VirtualStringTree ; ist Knoten sichtbar?

  Alt 29. Jul 2007, 10:25
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:
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;
Gruß Hawkeye
  Mit Zitat antworten Zitat
drchaos

Registriert seit: 15. Jun 2007
13 Beiträge
 
#3

Re: VirtualStringTree ; ist Knoten sichtbar?

  Alt 29. Jul 2007, 11:56
Zitat von Hawkeye219:
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.
Danke, das war mir bewußt. Ich habe Knoten, die immer im VST vorhanden sind - sobald die sichtbar werden, wird OnGetText getriggert. Dort frage ich das zu dem Knoten gehörende Objekt ab, ob neue/mehr Informationen dargestellt werden müssen. Ist das so, werden die Kindknoten dementsprechend aufgebaut.

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! , ich habe mich in der Doku/im Code zum VST schon halb tot gesucht...
  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 22:56 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