Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#14

Re: VirtualStringTree: Problem mit ImageIndex

  Alt 10. Sep 2009, 13:38
Auch noch ein Tipp von mir

function AddChild(Parent: PVirtualNode; UserData: Pointer = nil): PVirtualNode; Viele wissen nicht genau, was man mit UserData anfangen kann.
Es ist aber ganz nützlich, weil man damit Daten noch vor dem OnInitNode Event dem Knoten zuweisen kann.
Der Parameter UserData wird dabei direkt auf die ersten 4 Bytes des Records gesetzt.
D.h.

Delphi-Quellcode:
Type
  PMyNodeData = ^TMyNodeData;
  TMyNodeData = record
    MyData : Pointer; <-- UserData aus AddChild
    Rest ...
  end;
Da kommen die Daten rein. Dabei muss es sich nicht um ein Pointer handeln, auch eine Klasseninstanz oder Interface geht - also alles was 4 Byte beansprucht. Nur sollte im Record auch wirklich ein 4 Byte Typ stehen und nicht etwa weniger. Sonst kommt es gerne mal zu Nebenwirkungen.

Wenn man UserData benutzt, bekommt der Knoten einen State zugewiesen, so dass man dies in OnInitNode überprüfen kann :
if vsInitialUserData in Node.States then Wichtig zu wissen ist dabei, dass der var Parameter InitialStates von OnInitNode nicht diesen Status enthält.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat