Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TListView Laufleiste beeinflussen


Muffi - Mo 27.10.03 15:31
Titel: TListView Laufleiste beeinflussen
Tach Post!!!! :D

Habe in meiner kleinen Anwendung eine TListView-Komponente eingefügt.
Diese wird zur Laufzeit mit Daten (sprich: Dateiname, Größe usw.) gefüllt.
Wenn ich z.B. mehrere Zeilen hinzufüge, werden diese zwar eingefügt aber die Laufleiste läuft nicht mit. :?

Ich muß sie immer wieder nachziehen um die neuesten Einträge zu sehen. :autsch:

Kann man das so einstellen, das beim Einfügen die Laufleiste (vertikal) immer unten bleibt - also die neuesten Einträge sichtbar sind.

Ich hoffe, das war verständlich genug.

Vielleicht weiß ja jemand Rat


joerg68 - Mo 27.10.03 15:57

Es gibt eine Eigenschaft ItemFocused. Damit kannst Du festlegen welches Item den Focus erhalt. Wenn Du dem Letzten Icon das du hinzugefügt hast den Focus zuweißt müßte die Laufleiste auch da stehen wo sie hingehört :)
Da ich es aber nicht ausprobiert habe gilt
Alle Angaben ohne Gewähr und zu Risiken und Nebenwirkungen ... :wink:

Gruß
JÖrg


smiegel - Mo 27.10.03 16:57

Hallo,

ein TListItem hat die Eigenschaft MakeVisible. Damit erreichst Du, dass der Eintrag sichtbar wird und somit auch die Scrollbar aktualisiert wird.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with ListView1 do
begin
  ...
  Selected:=Items[Items.Count-1];
  Selected.MakeVisible(False);
  ...
end// with


focus - Mo 27.10.03 17:45

Wenn dus dir einfach machen willst ...
schmeiss doch die Daten oben drauf und nicht unten drunter, dann fällt die ganze Problematik weg...
und ein Umsortieren eines 32bit Arrays sollte kein Problem im Hinblick auf Performance usw sein...(gibt es nicht sogar ein insert schon beim ListView mitgeliefert?)
Kleiner Tip am Rande:
nimm doch einfach die TVirtualStringTree Komponente, die ist performanter und wenn dus richtig anstellst macht sie die gesamte Speicherverwaltung für dich :mrgreen:
(nicht das ich faul bin oder so.. :roll:)
gruss
michael