![]() |
Listview-Spalten/Zeilen
Hi,
ich experimentiere momentan mit einem ListView. Style ist vsReport. Mit dem Column-Editor habe ich 4 Spalten hinzugefügt (Column0-Column3). Es sind aber 5 zu sehen. :twisted: In der Hilfe steht irgendwas von Iconspalte, aber ich brauche keine Icons. Wie kriege ich die Spalte weg ? Soll ich sie einfach unsichtbar machen, durch ziehen des Randes ? Das nächste sind die Zeilen. Ich brauche eine genau definierte Anzahl. RowCount oder so was habe ich noch nicht entdeckt. Wenn jemand noch was wichtiges zu dem ListView weiß, was man nicht auf den ersten Blick sieht, siehe "vsReport" dann her damit. |
Re: Listview-Spalten/Zeilen
Das ist nicht die 5. Spalte. du musst die Breite der anderen 4 Columns bei Width im OI einstellen.
Dynamisches Hinzufügen von ListItems (Zeilen):
Delphi-Quellcode:
Dei 1. Zelle jedes ListItems wird mit ListView1.Items[0].Caption angesprochen,
CurrentListItem: ListView1.Items.Add;
die restlichen 3 Zellen in jedem ListView werden mit SubItems[0] - SubItems[2] angesprochen. Im OI gibt es auch eine Property, welche im ListView, einen Art Grid anzeigt. Ist also eine Boolean-Property. greetz mytar :-D |
Re: Listview-Spalten/Zeilen
Ich empfehle die Breite der Listview-Spalten auf -2 zu setzen. Dies bewirkt, dass die Spaltenbreite automatisch angepasst wird, und zwar auf den breitesten Inhalt. Weiters wird auch die Breite der Spaltenüberschrift berücksichtigt. Wählst du -1, so fällt der letzte Punkt weg.
Und was meinst du mit fixer Zeilenanzahl? Greetz alcaeus |
Re: Listview-Spalten/Zeilen
ListView1.Items.Count bekommst du die Anzahl der Items (oder was meintest du?)
@alcaeus: Ui. Das wusste ich auch noch nicht, ich habe es immer selber gemacht :? Danke! |
Re: Listview-Spalten/Zeilen
Es gibt im OI eine property die die Spaltenbreite automatisch anpasst!
Weiß leider nicht mehr welche? greetz mytar :-D |
Re: Listview-Spalten/Zeilen
Zitat:
Greetz alcaeus |
Re: Listview-Spalten/Zeilen
Das mit der -2 war gut. :thumb: Es sieht nur zur Designzeit seltsam aus. Ja, dann das mit den Zeilen. Ich habe das geahnt, daß es da Ärger gibt. Bestücke ich die ListView mit Werten, dann kommt jetzt : "Listenindex überschreitet das Maximum (4)" Was ist das ? :zwinker:
|
Re: Listview-Spalten/Zeilen
Zeig mal etwas Source her ;-)
|
Re: Listview-Spalten/Zeilen
Zitat:
Bei irgendeiner Property wird die Spaltenbreite zur Designtime automatisch ausgeglichen! greetz mytar :-D |
Re: Listview-Spalten/Zeilen
Listenindex ist erledigt, ich hatte die Zeilen und Spalten vertauscht. Es sind 4 Spalten, aber mehr Zeilen.
Wie bestücke ich aber jetzt die weiteren Zeilen ? :shock: Die Titelzeile geht so :
Delphi-Quellcode:
Wo sind die Zeilen ?? :shock:
ListView1.Column[0].Caption := 'Tag';
|
Re: Listview-Spalten/Zeilen
Schau dir die 1. Antwort an!
greetz mytar :-D |
Re: Listview-Spalten/Zeilen
Meinst du so ?
Delphi-Quellcode:
Wird zwar compiliert, aber dann kommt eine Zugriffsverletzung.
ListView1.Items[0].Caption := '1';
ListView1.Items[0].SubItems[1] := '2'; |
Re: Listview-Spalten/Zeilen
Die SubItems musst du zuerst hinzufügen:
Delphi-Quellcode:
Außerdem beginnen Indizes immer mit 0 ;)
ListView1.Items[0].SubItems.Add('Foo');
Greetz alcaeus |
Re: Listview-Spalten/Zeilen
Zitat:
Dann machst du
Delphi-Quellcode:
Und Nun kannst du mit MyListItem.Caption den Text bestimmen.
MyListItem := ListView1.Items.Add;
Für die restlichen Spalten musst du MyListItem.SubItems.Add('Dein Text') verwenden. Später kannst du dann auch auf die ListItems via ListView1.Items[Index] zugreifen greetz mytar :) |
Re: Listview-Spalten/Zeilen
Delphi-Quellcode:
Kein Unterschied -> Zugriffsverletzung. 8)
ListView1.Items[0].SubItems.Add('1');
|
Re: Listview-Spalten/Zeilen
|
Re: Listview-Spalten/Zeilen
|
Re: Listview-Spalten/Zeilen
Wisst ihr was ? Die ListView ist ziemlich unbrauchbar. Zumindest für so einen einfachen Zweck. Zumindest ist sie schwer zu handhaben und die OH gibt kaum was her.
Außerdem beschleicht mich das Gefühl, daß sie sehr unlogisch programmiert ist. Handelt es sich dabei vielleicht nicht um ein Borland-Eigengewächs ? Wie dem auch sei, ich muß noch weg und wenn ich wieder zurück bin, dann weiß ich was zu tun ist. Im Moment sieht es für die ListView sehr nach Tonne aus. :mrgreen: |
Re: Listview-Spalten/Zeilen
:shock:
Nur wenn man sie nicht versteht, heißt es nicht gleich, dass es mist ist :roll: Und du weißt doch sicherlich, dass es die Listview auch in der WinAPI gibt? Bzw. sie daher kommt... Der Desktop ist eine, oder der Teil des Windows Explorer, in denen die Daten stehen ... Poste uns doch einfach den Sourcecode, den du bisher hast und erklär noch mal dein Problem... PS: Auch hier in der DP wirst du sicherlich fündig werden... |
Re: Listview-Spalten/Zeilen
Zitat:
Die Zeilen sind nun problematisch, weil es Items und SubItems gibt, die vielleicht in einem Tree-View Sinn machen würden, aber doch nicht bei einer zweidimensionalen genau definierten Fläche. Fazit : für meinen Zweck unbrauchbar, ansonsten sehe ich nur einen Einsatzzweck : wie im Win-Explorer, für die Detail-Anzeige von Dateinamen, der Unterverzeichnisse (Subitems) usw. |
Re: Listview-Spalten/Zeilen
Nochmals:
In einem ListView (TListView) gibt es Spalten (TListColumns) und Zeilen (TListItems). ListView enthält eine Instanz von TListColumns und eine von TListItems. TListColumns (Spalten) ist eine Liste, bestehend aus TListColumn (Spalte). TListItems (Zeilen) inst ein Liste von TListItem-Instanzen (Zeile). Ein ListItem (Zeile) hat eine 1. Zelle (Caption) und je nach Spaltenanzahl weiter Zellen, die sog. SubItems. Dazu gibt es in der OH ein gutes Beispiel. Die Indizes für den einzelnen Zugriff auf existierende ListItems bezw. ListColumns ist genauso wie bei dynamischen Arrays. D.h. Bei 5. Zeilen greift man auf diese mit Items[0] bis Items[4] zu. greetz mytar :-D |
Re: Listview-Spalten/Zeilen
Danke für die Hilfe, aber wie bereits gesagt, meiner Ansicht nach ist die Listview für den geplanten Einsatzzweck nicht das richtige.
Ich könnte auch, an anderer Stelle, statt eines Edits ein Stringgrid verwenden, Spalten und Zeilen auf 1 setzen, die Titelleiste ausblenden usw. :mrgreen: Erschwerend für das ListView kommt hinzu, daß es sich um ein statisches und kein dynamisches Problem handelt. Informationstechnisch gesehen könnte ich ein array [1..15] of string benutzen. Und so habe ich das auch jetzt gemacht. Jeder string besteht zwar aus 4 Zahlen-Spalten, aber die kann ich auch vorher zusammensetzen/ umwandeln/ formatieren und damit habe ich nur eine 1-dim. Sache. Somit reicht eine Listbox. Da das ganze noch nicht zu 100 % funktioniert bliebe immer noch ein Stringgrid als Ausweg. Einfacher ist die Listview auch nicht zu behandeln. |
Re: Listview-Spalten/Zeilen
OK! Ganz klar deine Entscheidung!
Ich möchte nur noch sagen, das die ListView sehr interessant ist. Aus gutem Grund ist sie in der VCL. In vielen P2P-Clients ist eine ListView enthalten, sogar mit Progressbar. Aber auch in einfachen Verwaltungsprogrammen ist eine ListView zu finden. |
Re: Listview-Spalten/Zeilen
Eben, die ist sehr interessant, aber es kommt darauf an, wofür man sie überhaupt braucht. 8) Für einfache, statische Sachen wäre es Unfug, sie zu verwenden.
Ich habe mir jedenfalls angewöhnt, eine Problemstellung so weit es geht zu reduzieren und dann die einfachste Lösung einzusetzen. Deshalb habe ich ein zweidimensionales Problem zu einem 1-dim. gemacht und fertig. Wäre dies nicht möglich, so wäre ein Stringgrid denkbar gewesen. Für die ListView sehe ich in dem konkreten Fall deshalb keinen Bedarf. Was allerdings nicht heißt, daß ich es nicht irgendwann brauche. :P |
Re: Listview-Spalten/Zeilen
Um noch mal auf dein Problem einzugehen, hast du vielleicht einfach vergessen, die Columns/Spalten zu erzeugen? Bspw. im OI oder auch per Code?
Ich hoffe ich hatte das Problem noch richtig im Schädel ;-) Meiner Meinung ist das Einsatzgebiet einer Listview seeehr breit ;-) |
Re: Listview-Spalten/Zeilen
Zitat:
Es ging um eine Art Grid, also eine zweidimensionale Darstellung von Zahlen, ohne Editier-Funktion o.Ä. Da nun aber alle Zahlen gleichberechtigt sind, hat mich schon mal das mit den Items und Subitems irritiert. Ist überflüssig und macht die Wartung schwerer, sofern man nicht Tag und Nacht mit ListViews hantiert. Das nächste waren die Styles. vsReport und die anderen haben nicht viel gemeinsam. Für mich sind das eingebaute Fallen, die im Fehlerfall später schwer zu finden sind. Für mich gehört es in die Kategorie "Komponenten, die die Welt nicht braucht". 8) Zumindest macht es mehr Ärger, als es Sinn macht. Genauso, wie das DBgrid. Auch das DBChart habe ich eliminiert. Das sind alles eklige Sachen, die einen nur aufhalten. Lieber einmal selber etwas programmiert, als vorgefertigte unzulängliche Sachen zu benutzen. Von mir aus könnt ihr weiterhin das ListView "verteidigen", aber bei mir ist es vorerst im Trash. :lol: |
Re: Listview-Spalten/Zeilen
Hansa, Du bist eenen Querulant :mrgreen:!
|
Re: Listview-Spalten/Zeilen
Zitat:
|
Re: Listview-Spalten/Zeilen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Kleines Beispiel: Vor 1/2 Wochen mussten alle paar Tage Daten aus einer total zerfriemelten txt-Datei in unsere DB eingelesen. Zur Darstellung von Fortschritt und Inhalt (Patienten, Queries,...) wählte ich einen ListView. Denn damit konnte ich mit dem geringsten Aufwand die Wert halbwegs übersichtlich darstellen. Ich konnte mich also voll darauf konzentrieren die olle Datei meinem DB-Modell anzupassen (und das absolut DAU-sicher :roll: ). Das Layout hat mich zum Schluss vielleicht 15-20 Minuten gekostet (Wobei wohl 70% auf's Aussuchen der Icons und die Gruppierung fiel ;) ). Mit einem anderen Control hätte ich wohl eine öde rein tabellarische Ansicht, oder Images und Labels ( :evil: *bäh* ) nehmen müssen. Auf jeden Fall hätte ich wesentlich mehr Zeit dabei vertrödelt... Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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