Bilder animieren

Moin,
2 Tabellen, [WebCam] und [WebCamPicts]. In der Input-Form von [WebCam] möchte ich die Bildchen von [WebCamPicts] quasi als SlideShow anzeigen. Will aber nicht.

In der Input-Form von [WebCam] gibt es das Bildfeld [WebCamPict]Bild.
Der Button für die Slide-Show hat diese Routine:

C_LONGINT($index_L)

If (Form event code=On Clicked) //.

USE NAMED SELECTION("Slider")
FIRST RECORD([WebCamPicts])

For ($index_L;1;Records in selection([WebCamPicts]))

GOTO SELECTED RECORD([WebCamPicts];$Index_L)
REDRAW([WebCamPicts]Bild_Pic)
DELAY PROCESS(Current process;60)
NEXT RECORD([WebCamPicts])

End for 

Else
// ignore
End if

Aber es tut sich nix. Keine wechslenden Bilder. Wo stehe ich denn da auf dem Schlauch?

Solange Code läuft wird der Bildschirm nicht aktualisiert. Das vermeidet Flackern und optisches “rutscht hin und her”.
Selbst wenn es gehen würde, wäre es in Ihrem Fall falsch. Solange der Code läuft (z. B. langsames laden vom Server) wäre keine User-Interaktion möglich, der Code läuft ja, das Interface erscheint eingefroren.
Wenn Sie 100 Bilder anzeigen, ist der Rechner für 100 Sekunden “tot”.

Deshalb entweder:
Timer setzen, im Timer alle 60 Ticks ein Bild weiter schalten. Das ist der klassische Weg.

Besser:
Code in preemptive Threads verlagern, User Interface Thread (coorp) macht nur User Interface. Berechnungen können ruhig rechenintensiv werden, hat keinen Einfluß auf Reaktionszeit für den User.
Der “Rechenthread” ruft über Call Form eine Aktion im User Interface auf (wie hier, Zeige Bild xy). Das bietet sich vor allem an wenn die Bilder aufgrund von berechneten Daten erzeugt werden müssen.

Hallo Herr Maul,

prima - funktioniert so prächtig. :slight_smile: