Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#5

AW: Zeilenumbruch einer Listbox beim Speichern erhalten

  Alt 4. Mai 2012, 01:27
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;
  Mit Zitat antworten Zitat