Delphi-PRAXiS
Seite 2 von 2     12   

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 ListView, breite ändern - Items neu zeichnen. (https://www.delphipraxis.net/78325-listview-breite-aendern-items-neu-zeichnen.html)

EWeiss 3. Okt 2006 17:24

Re: ListView, breite ändern - Items neu zeichnen.
 
Zitat:

Zitat von shifter
Irgend wie versteht mich hier niemand :( .

Wenn ich Explorer in einder stelle wo ich Bilder habe öffne mit ansicht z.B. Mittelgrosse symbole,
bekomme ich zu sehen Thumbnails mit beschriftung. Wenn ich das Fenster jetzt vergrössere oder verkleinere, passen sich die Items den Fenster an ( ministens von der breite ).
Also wenn Fensterbreite ist X -> passen da z.B. 5 Objekte in der breite. Wenn ich jetzt das Fenster vergrössere X+200px Passen jetzt z.B. 7 Objekte in der Breite.

Und das möchte ich hinkriegen.

gruss
seba

Wiedermal das berühmte subclassing (WinProc)
Der ansatz WM_RESIZE ist nicht verkehrt.!
Reicht aber nicht.

Du benötigst den REC des Listviews.
Holen über die API GetWindowRrec vom hwnd des Listviews.
Die breite des Rec vergleichen mit der Anzahl an objekten dann dadurch teilen und neu zeichnen

gruß

EWeiss 3. Okt 2006 18:07

Re: ListView, breite ändern - Items neu zeichnen.
 
Noch was anderes zu den Thema!
also wenn ich das richtig verstanden habe möchtest du objekte die im Listview
angezeigt werden nicht neuzeichnen sondern reorganisieren abhängig von der breite
der objekte welche du vorher festgelegt hast.

Beispiel:
Ein listview ist unterteil in Row und Col stelle es dir also als gitter vor.
Wenn du nun zwei objekt hast welche 100x100 groß sind dann benötigst du zwei columheader(col) und ein Row
Wird das Listview nun verschoben, verkleinert mußt du dafür sorge tragen das wie oben
beschrieben du den REC des Listview kennst.

Den holst du über GetWindowRec(handle vom listview).
Diesen mußt du immer durch die breite und höhe deiner Objekte teilen.
Da abhängig davon row/cols entfernt bzw.. addiert werden.

Nur breite verändern!
Ist der rec weniger als 200 + space(freiraum zwischen jeden objekt) dann mußt du
dafür sorgen das dein objekt scaliert wird oder aber Col um 1 minimiert wird.

Bei der ersten Methode bleiben beide objekte erhalten aber verkleinert
Bei der zweiten ist nur noch eins vorhanden(sichtbar).

Wenn du beides verschiebst. geht es im grunde genauso.
Also wenn breite mehr als 200 + space dann col addieren und row abziehen wobei das objekt von Row dann
in den neu geschaffenenen Columnheader angezeigt wird.

Hoffe das ist es was du meinst. Sorry für die lange geschichte!

gruß

shifter 3. Okt 2006 18:33

Re: ListView, breite ändern - Items neu zeichnen.
 
Das ist exackt was ich brauche.
Aller dings ich komme mit der materie nicht ganz klar.
Aber bevor ich Euch weiter belestige werde ich noch versuchen das selber zu lösen,
klingt aber schririg. Vor allem wie bringe ich ihm dazu es die Items zu zeichnen da wo ich sie brauche.

hmm ..

ich werde versuchen.


danke erstmal.

gruss
seba

EWeiss 3. Okt 2006 18:39

Re: ListView, breite ändern - Items neu zeichnen.
 
Delphi-Quellcode:
Vor allem wie bringe ich ihm dazu es die Items zu zeichnen da wo ich sie brauche.
Eigentlich wenn es standard items sind zeichnen sich diese von selbst.
Wenn du aber Thumbnails in der Listview anzeigen willst, mit Rahmen und so
das wird schwieriger.

gruß

shifter 3. Okt 2006 19:15

Re: ListView, breite ändern - Items neu zeichnen.
 
Das ist nähmlich der fall, ich will Thumbnails zeichnen mit allem drum und Dran.

Habe erst mit ScrollBox versucht hatt eingentlich ganz gut geklapt aber es war zu langsam.
Ich habe mir erhoft mit ListView geht es schneller.



gruss
seba

shifter 3. Okt 2006 20:46

Re: ListView, breite ändern - Items neu zeichnen.
 
Wie kann ich den Abstand zwischen den Thumbnails ( Items ) ändern ???

gruss
seba


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Seite 2 von 2     12   

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