Screenshot machen und zeichnen, um Arbeitspause zu überbrücken
-
Hallo,
in einer Anwendung werden die Mitglieder von Gruppen per Bild in einer ScrollBox angezeigt.
Beim Wechsel der Gruppe wird die ScrollBox geleert, die Daten der nächste Gruppe berechnet bzw. geladen und schließlich angezeigt.
Je nach Gruppengröße (z.B. über 200) bleibt die ScrollBox einige Sekunden leer. Das möchte ich ändern.Meine Idee: vorm Ändern screenshote ich die ScrollBox, zeichne das Bild auf die ScreenBox und lasse es dort, bis meine Berechnung abgeschlossen und die Bilder der nächsten Gruppe angezeigt werden.
Würde das funktionieren?
Wenn ja, über Techniken, Screenshots von Bildschirmbereichen zu erstellen, finde ich Etliches. Aber wie zeichne ich z.B. auf eine ScrollBox?
Gruß
Leo
-
Hi,
Leo Freitag schrieb:
Je nach Gruppengröße (z.B. über 200) bleibt die ScrollBox einige Sekunden leer..
Wenns so ist, wird dein Screenshot dann während dieser Zeit angezeigt? Zur Darstellung würde ich ein TImage nehmen.
Versuche vielleicht zuerst, mit Application->ProcessMessages(); dem PC Zeit zu geben, den Job zu erledigen.
Alternativ einen Thread.mfg
kpeter
-
Hallo
Ich würde lieber den Ladevorgang optimieren. Zum Beispiel könntest du gleich schon mit dem Programmstart alle notwendigen Daten über einen extra Thread laden lassen, und hast dann alles bereits fertig wenn du die Scrollbox darstellen must.
Oder du baust die Scrollbox so um, das zuerst nur die reine Anzahl der darzustellenden Elemente ermittelt wird, um nur erstmal die Dimension festlegen zu können. Geladen werden nur die Daten die gerade dargestellt werden (und dann gleich wieder in einem Cache landen), für den Rest gibt es nur einfache Platzhalter.Must du wirklich mehrere Sekunden für den Aufbau der Scrollbox aufwenden, dann solltest du nicht mit seltsamen Screenshots arbeiten. Sondern verstecke die Scrollbox während des ladens (Eigenschaft Visible), und bring dafür einen entsprechenden Ladehinweis an die leere Stelle. Zusammen mit einer Auslagerung des Ladevorgangs in einen Thread sowie einen guten Ladebalken ist das noch Anwenderfreundlich. Solange eben nur nicht der Anwender den Eindruck hat, dein Programm ist eingefroren und wie wild klickt und auf die Tasten haut...
bis bald
akari