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 [D7]Virtual ListView Einträge hinzufügen (https://www.delphipraxis.net/59427-%5Bd7%5Dvirtual-listview-eintraege-hinzufuegen.html)

TUX_der_Pinguin 22. Dez 2005 09:21


[D7]Virtual ListView Einträge hinzufügen
 
Hi,

ich habe eine Virtual ListView, alles klappt wunderbar. Nur wenn ich
einen Eintrag hinzufüge, dann wird die Liste wieder an den Anfang gescrollt.
Das würde ich gern verhindern, was ich mache ist folgedes.

Im OnCreate Teil des Forms wird ein Dynamisches Array mit den Datensätzen
erstellt, dann wird mit ltvList.Items.Count die Anzahl der Einträge gesetzt
und im OnData Ereignis das ListView gefüllt. Klappt alles ...

Wenn ich jetzt einen Einträge im Array einfüge, es neu Sortiere, und
dann den neu hinzugefügten Eintrag anzeigen lassen will.

Setze ich erneut die Anzahl ltvList.Items.Count := ltvList.Items.Count+1
Jetzt wird aber die Liste wieder an den Anfang gescrollt, der Scrollbalken
soll aber dort stehen bleiben wo er stand, z.B. in der Mitte der Liste.

Wie ist das zulösen ? Jemand vorschläge ...

mfg

TUX

marabu 22. Dez 2005 09:44

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hallo TUX,

das von dir beschriebene Verhalten wirst du in meinem Demo-Programm nicht beobachten. Vermutlich liegt das an deinem Code.

Grüße vom marabu

TUX_der_Pinguin 22. Dez 2005 10:30

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hi Marabu,

sorry aber dein Programm macht genau das was meines auch macht.

Ich habe in deinem Programm eine Datei geladen, in die Mitte der Liste
gescrollt, dann habe ich rechts klick -> hinzufügen ausgeführt und einen
neuen Eintrag hinzugefügt. Zack der Scrollbalken war wieder ganz oben
und der allererste Eintrag der Liste ist zu sehen. Das habe ich gemeint
mit meiner Problembeschreibung und dafür habe ich keine Lösung bisher
wie der Ausschnitt der vor dem hinzufügen eines Eintrags sichtbar ist,
auch sichtbar bleibt und dieser Ausschnitt sich nicht verändert.

Vielleicht ist das was ich will, auch gar nicht möglich bei einem Virtual
ListView, dem will ich aber auf den Grund gehen.

mfg

TUX

marabu 22. Dez 2005 11:56

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hallo TUX,

ich hätte meinen Beitrag nicht gepostet, wenn ich nicht gewusst hätte, dass das von dir beschriebene Verhalten bei mir nie auftritt. Der Fehler muss auf deiner Maschine zu suchen sein, nicht in deinem oder meinem Programm.

marabu

TUX_der_Pinguin 22. Dez 2005 12:08

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hi,

ja aber was soll das sein, ich benutze Delphi 7 Personal auf einer
Window98SE Maschine.

Habe deine Demo, ganz normal kompiliert und dann trat das Verhalten
auf so wie ich es beschrieben habe.

mfg

TUX

Wraith 22. Dez 2005 12:21

Re: [D7]Virtual ListView Einträge hinzufügen
 
Wäre es möglich, dass Windows98SE sich bei vielen Sachen anders verhält als XP? Ich habe auch schon die Erfahrung gemacht, dass sich auf XP kompilierte Programme auf 98 anders verhalten bzw. manchmal Fehler erzeugen oder im Extremfall gar nicht laufen.

TUX_der_Pinguin 22. Dez 2005 12:35

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hi,

ich weiß wieso das bei dir Funktioniert und bei mir nicht Marabu,
und zwar liegt es an folgender Problematik.

Wenn man die Liste aufruft, nach unten scrollt und einen Eintrag auswählt,
dann ein neuen Eintrag hinzufügt dann bleibt der Auschnitt erhalten
sowie der Scrollbalken an seiner Postion.
Ist jedoch kein einziger Eintrag ausgewählt so springt jedesmal der
scrollbalken nach oben...
Wenn ein Eintrag selektiert wurde und man scrollt weiter und fügt einen
Eintrag hinzu dann springt der Ausschnitt zu der Stelle des Selektierte
Eintrages.

Man müßte also immer einen Eintrag aus dem aktuellen Ausschnitt selektieren,
damit der Ausschnitt so bleibt wie gewünscht und nicht 'verschoben'
wird. Also fuscht man sich soetwas zurecht, weil es keine andere Lösung
gibt oder man muß sich noch etwas ganz anderes ausdenken, wobei mir
einfach nichts einfällt wie es doch gehn sollte.



mfg

TUX

dahead 22. Dez 2005 12:38

Re: [D7]Virtual ListView Einträge hinzufügen
 
könntest du dir nicht einfach den letzten itemindex speichern und nach dem hinzufügen wieder diesen selektieren?

TUX_der_Pinguin 22. Dez 2005 13:30

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hi,

wenn doch kein Eintrag selektiert ist ist ItemIndex = -1, was soll
ich mir den da merken, ausserdem ist die Problematik ja nur bei
keiner Selektion oder einem selektierten Eintrag ausserhalb des
Ausschnittes.

Wenn ein Eintrag aus meinem aktuellen Ausschnitt selektiert wurde,
funktioniert ja alles wie es soll...dann brauch ich mir auch nix
merken.

mfg

TUX

marabu 22. Dez 2005 13:44

Re: [D7]Virtual ListView Einträge hinzufügen
 
Hallo TUX,

wenn die unerwünschte Neupositionierung nur dann erfolgt, wenn kein Item selektiert ist, dann erzwinge doch eine Selektion, entweder für TopItem oder für das neu angefügte Item.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.

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