Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Items Horizontal nebeneinander anzeigen (https://www.delphipraxis.net/116399-items-horizontal-nebeneinander-anzeigen.html)

PatrickB 28. Jun 2008 13:24


Items Horizontal nebeneinander anzeigen
 
Hi,

ich versuche gerade die Dateien eines Ordners anzeigen zu lassen.
Nun will ich das aber so machen, dass die Elemente horizontal angezeigt werden, so wie wenn man die Dateien bzw. Ordner unter Windows bei Ansicht als "Liste" anzeigen lässt.

Mit einer Listbox werden die ja nur untereinander angezeigt. Und mit dem Listview weiß ich nicht wie das funktionieren könnte wenns denn funktioniert.

Hoffe ihr versteht meine Frage,

Danke schonmal, PatrickB

mkinzler 28. Jun 2008 13:28

Re: Items Horizontal nebeneinander anzeigen
 
Schau dir mal ListView.ViewStyle an.

marabu 28. Jun 2008 13:30

Re: Items Horizontal nebeneinander anzeigen
 
Hallo Patrick,

die ListView hat eine Property ViewStyle. Die Werte vsIcon und vsSmallIcon liefern die von dir gewünschte Ordnung.

Kennst du die Delphi Beipiel-Komponente ShellListView?

Grüße vom marabu

dominikkv 28. Jun 2008 13:34

Re: Items Horizontal nebeneinander anzeigen
 
Zitat:

Zitat von PatrickB
Nun will ich das aber so machen, dass die Elemente horizontal angezeigt werden, so wie wenn man die Dateien bzw. Ordner unter Windows bei Ansicht als "Liste" anzeigen lässt.

Als Ansicht = "Liste" werden die Dateien im Explorer vertikal (Also untereinander) angezeigt, nicht horizontal.
Wenn du ein ListView auf vsReport stellst hast du diesen Effekt.

Ansomsten schau dir mal diverse ShellTreeViews an, die sind extra dazu konzepiert.

PatrickB 1. Jul 2008 14:51

Re: Items Horizontal nebeneinander anzeigen
 
Ok, dann müsste das ja das Richtige sein.
Aber irgendwie komme ich mit diesem ListView nicht zurecht und die Hilfe funktioniert nicht mehr. Da kommt am Start ein Fehler, dass die Datei nicht gefunden wurde für die Hilfe, deswegen frag ich jetzt hier.

Wie funktioniert das ListView genau?

Also es gibt ja dazu noch das ListItem und Subitem, aber die Subitems bekomm ich z.B. garnicht angezeigt und wenn ich mehrere ListItems haben will, müsst ich die ja alle oben deklarieren oder wie?

Hier mal ein Ausschnitt:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var srec: TSearchRec;
    li: TListItem;
begin
  //--------Dateien einlesen
 if Findfirst('Verzeichnis+'*.mp3', faAnyFile, srec) = 0 then
 begin
  REPEAT
   li := ListView1.Items.Insert(0);
   li.Caption := srec;
  UNTIL FindNext(srec) <> 0;
 end;
 findclose(srec);
 //------------------------
end;
Also das Programm geht in ein Verzeichnis und soll von dort alle Lieder mit der Endung .mp3 auflisten.
Zwischen REPEAT und UNTIL sollen dann die Ergebnisse in das ListView eingetragen werden.
Nur wenn ich das jetzt so mache, falls das überhaupt so richtig ist, gibt er mir natürlich den Fehler, dass li.Caption ein String und kein TSearchRect sein darf.

Danke schonmal,
Gruß PatrickB

taaktaak 1. Jul 2008 15:04

Re: Items Horizontal nebeneinander anzeigen
 
Wenn die Affenhitze in Hamburg mir nicht den Kopf total vernebelt hat, dann müsste zumindest dieser Teil verändert werden:
Delphi-Quellcode:
li := ListView1.Items.Insert(0);
   li.Caption := srec;
Dein Ziel ist doch, den Dateinamen in das Listview zu bringen. Der Dateiname steht in srec.Name, einen Eintrag in das Listview erzeugt man mit ...items.add(). Also

Delphi-Quellcode:
ListView1.Items.Add(srec.name)

PatrickB 1. Jul 2008 15:11

Re: Items Horizontal nebeneinander anzeigen
 
ListView1.Items.Add(); erwartet keinen Parameter, aber wenn ich anstatt srec, srec.name mache gehts.
Jetzt wirds mir angezeigt mit Style = List.
Aber die Einträge sind jetzt so weit auseinander, kann man das einstellen damit die näher beisammen sind?

DeddyH 1. Jul 2008 15:18

Re: Items Horizontal nebeneinander anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Dann hast Du eine Datei oder einen Ordner mit einem sehr langen Namen darin (siehe Anhang).

PatrickB 1. Jul 2008 15:21

Re: Items Horizontal nebeneinander anzeigen
 
Ok, danke. Hab den Ordner gefunden.

taaktaak 1. Jul 2008 15:38

Re: Items Horizontal nebeneinander anzeigen
 
Uhhhhh, jetzt habe ich mich geoutet, noch nie mit Listview gearbeitet zu haben :oops:

PatrickB 3. Jul 2008 16:41

Re: Items Horizontal nebeneinander anzeigen
 
So, eigentlich klappt das jetzt gut, aber nur eigentlich.

Ich habe mir jetzt eine procedure gemacht die FillListView(Dir) heißt.
Führe ich im OnCreate-Ereignis meines Formulars diese Prozedur aus, so wird es ganz normal angezeigt.
Führe ich jedoch die Prozedur dann noch einmal aus, nach dem OnCreate-Ereignis, so wir der Inhalt des ListView abgeküzrt dargestellt.
Man sieht also nicht mehr den vollen Dateinamen, sondern nur noch die ersten 15 Buchstaben und dann ... also z.B.: meinDateinameis... und vorher siehts halt so aus: meinDateinameistganzlang.txt .
Woran liegt das nun?

Ich danke euch schonmal für eure hilfreichen Antworten =)

Gruß, Patrick

_frank_ 3. Jul 2008 16:58

Re: Items Horizontal nebeneinander anzeigen
 
Zitat:

Zitat von PatrickB
Mit einer Listbox werden die ja nur untereinander angezeigt.

nicht unbedingt...schau dir mal TListbox.Columns an ;) aber kann durchaus sein, dass TListview besser geeignet ist (z.b. wenn du icons haben willst).

HTH Frank

PatrickB 5. Jul 2008 07:54

Re: Items Horizontal nebeneinander anzeigen
 
Ja, aber ne wirkliche Antwort auf meine Frage hab ich jetzt immer noch nich..

Matze 5. Jul 2008 08:56

Re: Items Horizontal nebeneinander anzeigen
 
Hallo Patrick!

Versuche mal nach dem Füllen die Spaltenbreite auf -2 zu setzen:

Beispielsweise so für die erste Spalte:

Delphi-Quellcode:
// ListView füllen
ListView.Columns[0].Width := -2;
Grüße, Matze

PatrickB 8. Jul 2008 13:50

Re: Items Horizontal nebeneinander anzeigen
 
Da kommt dann ein Fehler:

Zitat:

Listenindex überschreitet das Maximum (0)

marabu 8. Jul 2008 15:24

Re: Items Horizontal nebeneinander anzeigen
 
Hallo,

wahrscheinlich hast du keine Column in deine ListView eingefügt.

Delphi-Quellcode:
begin
  with ListView do
    if Columns.Count > 0 
      then Column[0].Width := ColumnTextWidth
      else ShowMessage('Keine Spalten gefunden');
end;
-2 entspricht ColumnHeaderWidth - das scheint mir hier eher ungeeignet zu sein.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz