Ich hoffe mein Problem ist verständlich.
So richtig verstanden habe ich es nicht. Eines ist klar, im TStrings ist jeder Item ein String, mehrere Items sind mehrere Strings, sind also eine StringList(e). Wenn du ein Strings brichst, werden zwei Strings draus, also zwei Items. usw.
Wenn du es also anders darstellen willst, aber die Strings in der Liste erhalten willst, dann mußt du die Ausgabe selbst zeichnen.
Ich hab hier nur ein Beispiel dafür, dass die Ausgabe in ListBox so aussehen kann, der Inhalt allerdings ganz anders sein kann. Im Beispiel lade ich eine Dateiliste inc. Pfade in die ListBox, will aber die Pfade nicht darstellen. Also werde sie für die Darstellung "entfernt", klicke ich allerdings auf ein Item, wird der korrekte Inhalt gezeigt, also Dateiname mit Pfad.
Delphi-Quellcode:
procedure GetFiles(Path: String; List: TStrings);
var
Search: TSearchRec;
begin
if FindFirst(Path + '*.*', faArchive, Search) = 0 then
repeat
List.Add(Path + Search.Name)
until FindNext(Search) <> 0;
FindClose(Search);
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
FileName: String;
begin
with (Control as TListbox) do
begin
FileName := ExtractFileName(Items[Index]);
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top, FileName);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Style := lbOwnerDrawFixed;
ListBox1.Clear;
GetFiles('c:\', ListBox1.Items);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
with ListBox1 do
Caption := Items[ItemIndex];
end;