Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#4

AW: Listview erst beim zweiten öffnen

  Alt 24. Apr 2016, 20:43
Ich habe das Sliden generell stark reduziert, das sieht zwar schön aus,
macht aber den Eindruck bei der Bedienung der App auch etwas lahm.
Ohne sliden wirkt die Bedienung flotter, und ich handle mir vor Allem keine Probleme damit ein.

Ein Slide mit Panel mache ich noch, um zusätzliche Bedienfunktionen anzuzeigen.
Das fahre ich einfach rein/raus mithilfe einer FloatAnimation (von unten rein in Position,
und wieder nach unten weg).
Das klappt ganz gut, aber womöglich nur weil ich in der Zeit nichts anderes machen muss.

Wenn z.B. der MultiView slidet, und ich parallel mit dem slidenden View noch die Datenbank aktiviere
und per LiveBindings in eine ListView schreiben lasse, dann ruckelt es.
Das scheint sich nicht so einfach entkoppeln zu lassen, die Wahl ist
- entweder alles vorherberechnen und geöffnet lassen - dann slidet es gut - braucht aber vollen Memory Footprint
(und braucht nach dem Start länger um alles vorzubereiten)
- oder das Sliden weglassen - und bei lägeren Operationen einen Animator zeigen.
(weil z.B. FormCreate eigentlich schnell genug funktioniert ist das kaum nötig)

Übrigens ruckelt der AniIndicator genauso, wohl aus dem gleichen Grund.
Deshalb lege ich bei solchen Wartezeiten noch zusätzlich einen grauen, Opaque 0.7 Panel über den ganzen View.
In dem sitzt dann der AniIndicator (der ruckeln kann).
Damit sieht dann zumindest etwas interessanter aus, wenn kurze Wartezeiten nötig sein, und das Ruckel
fällt nicht so auf.

Ich bin generell etwas vorsichtig bei den Animation geworden, weil wohl einige mit
Application.ProcessMessages funktionieren.
Threads und Tasks sind eine tolle Sache, aber schlussendlich muss es immer wieder an UI Controls übergeben
werden, und da kann es dann wieder hängen.

Hatte mal versucht möglichst alles in Backgroundthreads zu verlegen, und dann nur die UI-Zugriffe zu synchronisieren.
Das funktioniert ganz gut, aber die meisten Zugriffe sind halt die UI-Controls, ob sich ein Thread für
ein paar Hintergrundaufgaben lohnt ist mir noch nicht ganz klar.
Hängt wahrscheinlich vom jeweiligen Problem ab.
Ich möchte baer gar nichts Besonderes, sondern erstmal nur ein DataSet mit einem ListView verbinden,
ohne das es hängt.
Bei 20 Text-Einträgen geht das Alles auch, bei 2000 mit Bitmaps sieht es aber schon anders aus.

Rollo
  Mit Zitat antworten Zitat