Einzelnen Beitrag anzeigen

nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Problem mit Virtualtreeview

  Alt 15. Jan 2009, 07:58
Das erste was mir auffällt ist, dass Data normal ein Zeigertyp ist. Also PTreedataclass = ^TTreedataclass -> Data: PTreedataclass.

Hab selbst aber noch nicht mit Klassen im Knoten gearbeitet. Vielleicht stellst du ja auch einfach den Typ um?
Delphi-Quellcode:
type
  TTreedataclass=record
    imageindex:integer;
    test:integer;
    FObject : TObject;
  end;
  PTreedataclass = ^TTreedataclass;

  {...}

implementation

  {...}

function AddVSTObject(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; AData: TTreedataclass): PVirtualNode;
var Data: PTreedataclass;
begin
  Result:=AVST.AddChild(ANode);
    // AVST.ValidateNode(Result,False); Wozu?
    Data:=AVST.GetNodeData(Result);
    Data^ := AData;
end;//

procedure TForm1.Button3Click(Sender: TObject);
var I: Integer; TreeObject: TTreeDataClass;
begin
  VST.NodeDataSize:=SizeOf(TTreedataclass);
    for I:=1 to 100 do
    begin
      TreeObject.imageindex:=I-1;// TreeObject.TestInt:=Random(1000);
      TreeObject.test:=223;
      TreeObject.FObject := TObject.Create;
      // TreeObject.FObject ...
      AddVSTObject(VST,nil,TreeObject);
    end;
end;

  {...}

procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
  var ImageIndex: Integer);
var
  data : PTreedataclass;
  t0:integer;
begin
  if column = 0 then
  begin
     Data:=VST.GetNodeData(Node);
     ImageIndex := data^.ImageIndex;
     t0:=data^.test;
  end else ImageIndex := -1;
end;
  Mit Zitat antworten Zitat