Hab jetzt eine lösung gefunden na ja nicht das aller beste aber es funktioniert
Dank an
HenKst hab es mit dem Tag und unter Hilfe von Stephan doch noch geschaft.
Delphi-Quellcode:
function TCAVESkinManager.GetSelectedCategory(ObjectList: TStringList; TreeView: TBaseVirtualTree; Obj: TObject): TCAVEElementType;
var
Data : PTreeData;
// Zeiger auf die Structur
SearchData : PTreeData;
// Zeiger auf die Structur
Tag : Integer;
// wird addiert zum Object wenn erstellt
begin
// Daten zurücksetzen
Data :=
nil;
// raus hier wenn kein Tag im Object vorhanden
if TControl(Obj).tag = 0
then
begin
Result := stNone;
exit;
end;
New(SearchData);
Tag := TControl(Obj).tag;
// Index out of bound von ObjectList verhindern
dec(Tag);
begin
// Caption übergeben ermittelt über ObjectList.Index
// verglichen mit dem im Obj übergebenen Tag
SearchData^.FCaption := ObjectList.strings[Tag];
FFoundNode :=
nil;
// Callback IterateSubTree aufrufen
TreeView.IterateSubTree (
nil, FSkinTreeCallBack, pointer(SearchData));
// Eintrag gefunden .. CategoryNode zuweisen
if Assigned(FFoundNode)
then
begin
// Node an die class TCAVESkinManager übergeben
CategoryNode := FFoundNode;
// Structur Daten aktualisieren
Data := TreeView.GetNodeData(CategoryNode);
end;
end;
Result := Data.Category;
end;
Um nicht einen neuen Thread zu erstellen eine Frage hinterher
Wie kann ich jetzt übergreifend für alle Obj ein MouseEvent übergeben
Das existiert ja nicht bei der erstellung zur Laufzeit.
übergreifend (für alle die gleiche)
Oder sollte man das aufteilen ?
gruss Emil