16.10.2023, 00:52
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Да, забыл, приведение типов надо (as TFileItemData).
А вообще-то все работает. Т.е. ты в своем коде что-то делаешь не так:
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TFileItemData = class
FileName : String;
Atrib : String;
Size : Integer;
id : Integer;
rews:Integer;
function toString : String;
end;
function TFileItemData.toString : String;
begin
Result := Format('id: %d; File: %s; Size: %d; Reviews: %d; Attribute: %s',[id,FileName,Size,rews,Atrib]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
obj : TFileItemData;
begin
for I := 1 to 5 do
begin
obj := TFileItemData.Create;
obj.FileName := Format('filename-%d',[i]);
obj.Atrib := 'R';
obj.Size := Random(1000000);
obj.id := i;
obj.rews := i;
ListBox1.Items.AddObject(obj.toString,obj)
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
I : Integer;
obj : TFileItemData;
begin
for I := 0 to ListBox1.Items.Count-1 do
begin
obj := ListBox1.Items.Objects[i] As TFileItemData;
obj.Free;
end;
end;
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
obj : TFileItemData;
begin
if ListBox1.ItemIndex > -1 then
begin
obj := ListBox1.Items.Objects[ListBox1.ItemIndex] As TFileItemData;
ShowMessage(obj.toString);
end;
end;
end.
|