Thema: Delphi Objekte verschieben

Einzelnen Beitrag anzeigen

Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#7

Re: Objekte verschieben

  Alt 4. Sep 2008, 23:12
Hallo _frank_!

Danke erstmal für die Mühe!
Habe mir deinen Code mal angeschaut. Ich hatte mich in der Zwischenzeit auch ein wenig informiert und habe eine Frage zu deinem Code:

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var auto:TAuto;
    i:integer;
begin
  ListBox1.Items.clear;
  if assigned(node.data) then
  begin
    src:=TAutos(node.data);
    for i:=0 to src.count-1 do
    begin
      auto:=src.getItem(i); // FRAGE 1
      listbox1.items.AddObject(auto.Hersteller+' '+auto.Modell,auto);
    end;
  end;
end;

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var node:TTreeNode;
    autos:TAutos;
    auto:TAuto;
begin
  node:=(sender as TTreeview).GetNodeAt(x,y);
  autos:=TAutos(node.data);
  auto:=(Source as TListbox).Items.Objects[(Source as TListbox).Itemindex] as TAuto;
  src.Delete(src.indexof(auto)); // FRAGE 2
  autos.Add(auto);
Mit "auto:=src.getItem(i);" holst du dir doch nur den Zeiger auf das Objekt, oder? Deswegen ist mir nicht ganz klar, wieso bei "src.Delete(src.indexof(auto));" dieser nicht verworfen wird. Hat das vielleicht was damit zu tun, weil du das Objekt nicht freigibst (weil es ja weiterleben soll)?
Inwiefern hilft hier die ebenfalls für TObjectList zu Verfügung stehende Methode "Extract"?
  Mit Zitat antworten Zitat