Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#22

Re: Objecte zwischenspeichern

  Alt 17. Sep 2008, 17:27
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
  Mit Zitat antworten Zitat