Thema: Delphi Problem mit Record

Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#3

AW: Problem mit Record

  Alt 22. Mai 2012, 18:04
Wenn du mehrere Daten an ein TStrings hänge willst, wobei TListBox Items sind TStrings, dann würde ich es mit Objekten machen, denn da kannst an jedes Item Daten anhängen wie du willst.

Hier ein kleines Beispiel. Es hängt nur ein Datum als Beispiel ran, aber du kannst es erweitern wie du willst.


Delphi-Quellcode:
type
  TInfo = class //Beispiel-Klasse
    DT: TDateTime;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Info: TInfo;
  p: Integer;
begin
  with ListBox1 do
  begin
    Info := TInfo.Create; //Beispiel-Objekt Erstellen
    Info.DT := Now;

    p := Items.AddObject('Datum und Zeit', Info); //Zuweisen

    if p > -1 then
      ShowMessage(Format('Aktuelle Zeit im Item %d als Objekt gespeichert.',
      [p]));
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  DT: TDateTime;
  Info: TInfo;
begin
  with ListBox1 do
  begin
    if Count = 0 then Exit;
    if ItemIndex = -1 then Exit;
    if not (Items.Objects[ItemIndex] is TInfo) then Exit;

    Info := TInfo(Items.Objects[ItemIndex]); //Auslesen
    DT := Info.DT;

    ShowMessage('Im Objekt gespeicherte Zeit: ' + TimeToStr(DT));
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
  Info: TInfo;
begin
  with ListBox1 do //Objekte müssen separat freigegeben werden
    for i := 0 to Items.Count - 1 do
    begin
      Info := TInfo(Items.Objects[i]); //Freigeben
      Info.Free;
    end;
end;
Mit gewissem Aufwand geht es auch mit Records.

Geändert von Popov (22. Mai 2012 um 18:09 Uhr)
  Mit Zitat antworten Zitat