Bonjour la communauté,
Je travaille sur un système de chargement progressif des données dans une zone répétée sous WinDev Mobile, un peu comme le scroll infini de Facebook ou YouTube.
Objectif :
- Charger une première série de article (ex. 10 ou 30) au lancement.
- Charger les suivantes automatiquement quand l’utilisateur atteint la fin de la liste.
Approche actuelle :
Au démarrage, je récupère les premiers Articles avec une requête SQL
Quand l’utilisateur défile jusqu’à la fin de la zone répétée, de nouvelles Articles sont chargées.
Est-ce que quelqu'un a déjà mis en place un système de défilement infini sous WinDev Mobile et peut me guider ?
Merci d'avance pour votre aide ! 🙏
/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/
Voici Mon travail
Principe de fonctionnement du code :
NB: Mon unique champ est une zone repetee vertical appelé:ZRV_Plus et je suis en POO
Initialisation :
On vide la zone répétée ZRV_Plus.
On charge les 30 premières vidéos.
Chargement des vidéos par lot de 30 :
On récupère le total des vidéos à afficher.
Si toutes les vidéos ne sont pas encore chargées (gnOffset < gnTotalVideos), on charge 30 vidéos supplémentaires à chaque appel.
Mécanisme de chargement infini :
Lorsque l'utilisateur atteint la fin de ZRV_Plus, on recharge 30 nouvelles vidéos si nécessaire.On met à jour gnOffset pour passer à la page suivante.
Optimisation :
La requête COUNT(*) est exécutée une seule fois pour éviter des appels inutiles à la base.
gnLimite est un entier = 30
gnOffset est un entier = 0
gnTotalVideos est un entier = 0
Procedure ChargeVideos()
SI gnOffset = 0 ALORS
ReqRecupDescriptionVideo est une chaîne = "SELECT COUNT(*) FROM descriptionVideo"
ExecuReq = mySQLExec(ReqRecupDescriptionVideo, 1)
SI ExecuReq <> 0 ALORS
SI mySQLFetch(1) ALORS
gnTotalVideos = mySQLLitCol(1, 1)
SINON
Info("Aucun résultat trouvé.")
FIN
SINON
Info("Erreur lors de l'exécution de la requête.")
FIN
FIN
SI gnTotalVideos <> gnOffset ALORS
ReqRecupDescriptionVideo est une chaîne = "SELECT * FROM descriptionVideo WHERE IDStatutVideo = 1 AND IDTypeVideo = 3 ORDER BY IDDescriptionVideo LIMIT " + gnLimite + " OFFSET " + gnOffset
ExecuReq = mySQLExec(ReqRecupDescriptionVideo, 1)
TANTQUE mySQLFetch(1)
CheminCouverture = "C:/wamp64/www/Bensotv/albumprochette/" + mySQLLitColParNom(1, "CheminCouverture")
Trace(mySQLLitColParNom(1, "CheminCouverture"))
ZoneRépétéeAjoute(FEN_BENSOTV.ZRV_Plus, mySQLLitColParNom(1, "IDDescriptionVideo") + TAB + CheminCouverture)
FIN
gnOffset += gnLimite
FIN
ZoneRépétéeSupprimeTout(FEN_BENSOTV.ZRV_Plus)
Oje1RecupDescriptVideo est un RecupToutDescriptionVideo
Oje1RecupDescriptVideo.ChargeVideos()
SI ZRV_Plus = ZRV_Plus..Occurrence ET gnOffset <> 0 ALORS
Oje2RecupDescriptVideo est un RecupToutDescriptionVideo
Oje2RecupDescriptVideo.ChargeVideos()
FIN
LIMIT et OFFSET permettent de charger progressivement les vidéos sans ralentir l'application.
Voici LST 93 qui en parle:

J'ai besoins de votre aide je bloque depuis une semaine