Einzelnen Beitrag anzeigen

DavidKlimas

Registriert seit: 24. Sep 2006
Ort: Arlon, Belgien
71 Beiträge
 
#1

TreeList, pointer freigeben

  Alt 4. Mai 2007, 11:25
Hallo, ich habe ein Treeview und einige einträge haben Informationen in der Data eigenschaft :

Delphi-Quellcode:
Type
  PMyData = ^TMyData;
  TMyData = Record
    IntVal : Integer;
  End;

procedure TMainForm.ComboBox1Change(Sender: TObject);
var z,i : Integer;
    ReNode : TTreeNode;
    RaNode : TTreeNode;
    s : String;
    Str1: String;
    pData : PMyData;
begin
  Button1.Enabled := False;
  TreeView1.Items.BeginUpdate;
  TreeView1.Items.Clear;
  NewListBox3.Clear;
  for z := 0 to DKStringGrid4.RowCount - 2 do
  begin
    If StrToInt(DKStringGrid4.Cells[0,z]) = ComboBox1.ItemIndex+ 1 then
    begin
      i := 2;
      For i := 2 to StrToInt(DKStringGrid4.Cells[1,z]) do
      begin
        CityTable.Locate('Index', DKStringGrid4.Cells[i,z] ,[]);
        Str1 := CityTable.FieldByName('City').AsString;
        Str1 := Str1 +' ('+CityTable.FieldByName('Station').AsString+')';
        s := s + Str1+ #09;
        Application.ProcessMessages;
      end;
      AddTreeNodePathDupIgnore(TreeView1,s,#09,ReNode);
      CityTable.Locate('Index', DKStringGrid4.Cells[StrToInt(DKStringGrid4.Cells[1,z])+1, z] ,[]);
      Str1 := CityTable.FieldByName('City').AsString;
      s := Str1 +' ('+CityTable.FieldByName('Station').AsString+')';
      ReNode := TreeView1.Items.AddChild(ReNode, s);
      pData := New(PMyData); // Tu aloues de la mémoire
      pData^.IntVal := z+1;
      ReNode.Data := pData;
      s := '';
      TreeView1.Items.EndUpdate;
      Application.ProcessMessages;
    end;
  end;
  Button1.Enabled := True;
end;
Zum auslesen der Pointer hab ich folgendes :

Delphi-Quellcode:
procedure TMainForm.TreeView1Click(Sender: TObject);
Var
  pData : PMyData;
begin
  If Assigned(TreeView1.Selected.Data) Then
  Begin
    pData := PMyData(TreeView1.Selected.Data);
    ShowMessage(IntToStr(pData^.IntVal));
  end;
end;
Wie kann ich den benutzten speicherplatz wieder freigeben?
  Mit Zitat antworten Zitat