Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 12.02.04 14:13 
Hi,

TListBox hat ja die Eigenschaft "Columns". Nur, wie spreche ich die an ? Die Items kann ich doch nur mit dem Stringlisten-Editor eingeben. Und wo sind die Spalten ??

_________________
Gruß
Hansa
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 12.02.04 16:30 
Gar nicht. Setzt mal die eigenschaft Columsn auf 2 oder drei und lade mal 20 Items rein, dann siehst du was das ist. Nimm einen Listview mit dem Style Report.
Zitat:

Use Columns to specify the number of columns, in a multi-column list box, that are visible without having to use the horizontal scrollbar.
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 12.02.04 17:51 
Wozu ist dann Columns überhaupt vorhanden ? Nur wegen HorScrollBars ?:?

_________________
Gruß
Hansa
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 12.02.04 19:00 
Wie Luckie sagte,

die Funktion die du suchst bietet die Listbox nciht, für diese Funktion ist tListView da. Sprich du verwendest einfach die Falsche Komponente. TListBox bietet nur eine Möglichkeit die Einträge nebeneinander anzuodnen, aber nicht mehrere Spalten für einen Eintrag zu machen.

Gruß
Klabautermann
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 12.02.04 19:26 
Also gehen, geht das schon! Nur ist die Eigenschaft "Columns" für etwas anderes gedacht. Soviel zu den schlechten Nachrichten.

Um in ListBox in Spalten etwas auszugeben gibt es zwei Möglichkeiten:

1. Tabulatoren nutzen. Nur so einfach ist das nicht, d.h. es reicht nicht einfach nur Tabs einzusetzten. Du mußt per Api der Listbox mitteilen ab welchen Pixel der 2'te, 3'te usw. Tab ist. Wenn die Listbox das weiß, dann kannst du deine Tabs im Item-String einbauen. Das ganze hat einen Hacken. Geht der Text einer Spalte über die Tablänge hinaus, dann verschiebt sich alles in den Tabs. Dann kann der Wert aus Spalte 2 in Spalte 3 landen. Die Spalten-Werte sind also nicht absolut. Deshalb hab ich die Möglichkeit 2 entwickelt:

2. Hier ist man der Herr in seiner Badewanne, denn alles wird alleine gemacht. Im Draw-Ereignis der Listbox loge ich mich ein und übernehme die Kontrolle über die Canvas. Per TextOut und der Möglichkeit in einem Rect Bereich etwas auszugeben, zeichne ich den Text einer Spalte immer ab dem Pixel, ab dem sie stehen soll. Dazu nutze ich THeaderControl. Mit der Komponente bestimme ich die Position der Spalten. Das Ergebnis ist nicht kompliziert, man muß aber vorher ein wenig mit dem Draw Ereignis experimentieren. Das Ergebnis ist wunderbar und sieht in etwa so aus wie ListView.

_________________
Popov
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 13.02.04 22:50 
Luckie hat folgendes geschrieben:
Gar nicht. Setzt mal die eigenschaft Columsn auf 2 oder drei und lade mal 20 Items rein, dann siehst du was das ist. Nimm einen Listview mit dem Style Report.


Bei ListView schreibt er alles in eine Zeile. Ich brauche aber Spalten. Von Columns ist nichts zu sehen. Und was ist Style Report ??

Moderiert von user profile iconPeter Lustig: Quote-Tags korrigiert

_________________
Gruß
Hansa
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Sa 14.02.04 00:31 
Hallo,

@hansa
ViewStyle im Objektinspektor auf vsReport stellen. Dann kannst du über die Eigenschaft Columns ebenfalls im Objektinspektor Spalten hinzufügen. Eine ListView ist das Control was du in deinem Windows-Explorer auf der rechten Seite hast, wenn du Ansicht auf Detail stellst.

@Popov
Sorry, aber bloß weil es über fünf Ecken irgendwie geht, muss man es ja nicht gleich tun, wenn es bereits ein Control gibt, welches dieses Verhalten von Haus aus exakt bietet. Ausserdem kann man die ListView bequem über zwei verschachtelte Spalten durchlaufen um sie z.B. zu speichern oder zu drucken. Desweiteren hat man noch die Spaltenköpfe, die man Klicken kann, um zum Beispiel eine Sortier-Funktion für die Spalte zu starten.

MFG

- Ernesto -