Грузить надо через промежуточный список. Сначала грузишь в список, потом формируешь объект, а в ListBox добавляешь через AddObject и привязываешь этот объект к итему в списке.
Код:
type
TMyObject = class
Name : Stirng;
I1, I2, I3, I4 : Integer;
end;
function TForm1.GetObject(AStr : String) : TMyObject;
begin
Result := TMyObject.Create;
// Тут парсим строку и заполняем поля объекта
end;
procedure TForm1.ClearListBox;
var
I : Integer;
O : TMyObject;
begin
For I := 0 To ListBox1.Items.Count-1 Do
Begin
O := ListBox1.Items.Objects[i];
ListBox1.Items.Objects[i] := Nil;
O.Free;
End;
ListBox1.Items.Clear;
end;
procedure TForm1.Load(AFileName : String);
var
I : Integer;
S : TSTringList;
O : TMyObject;
begin
ClearListBox;
S := TStringList.Create;
S.LoadFromFile(AFileName);
For I := 0 To S.Count-1 Do
Begin
O := GetObject(S[i]);
ListBox1.Items.AddObject(O.Name,O);
End;
S.Free;
end;
procedure TForm1.ListBoxClick(Sender : TObject);
var
O : TMyObject;
begin
If ListBox1.ItemIndex > -1 Then
Begin
O := ListBox1.Items.Objects[ListBox1.ItemIndex] As TMyObject;
Edit1.Text := IntToStr(O.I1);
Edit2.Text := IntToStr(O.I2);
Edit3.Text := IntToStr(O.I3);
Edit4.Text := IntToStr(O.I4);
End;
end;
Первые 2 функции - служебные.
Следующая - загрузка файла.
Последняя - вывод данных в edit'ы.