PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Comment savoir si TableAffiche est réellement terminé ?
Comment savoir si TableAffiche est réellement terminé ?
Débuté par Pucpood, 13 déc. 2024 14:55 - 2 réponses
Membre enregistré
391 messages
Posté le 13 décembre 2024 - 14:55
Bonjour,

Lorsqu'on utilise TableAffiche() elle passe la main au code qui suit bien avant que l'affichage soit réellement terminé à l'écran.
Si à ce moment-là on fait un tri, on obtient une espèce de mixture où le tri se fait au fur et mesure de ce qui est affiché.
Le résultat est une succession de blocs de quelques lignes triées entre elles, mais pas un tri global.

Comment éviter ça ? (J'ai mis un gros Multitâche(-100) mais c'est moche et il arrivera un jour où ça sera insuffisant.)
Y a-t-il un événement exécuté à la fin réelle de l'affichage, ou un flag levé quelque part ?
À moins qu'une version asynchrone de TableAffiche appelant une CallBack ?

Merci.
Membre enregistré
141 messages
Posté le 13 décembre 2024 - 15:37
Bonjour

Je vois votre problème, vous voulez afficher des informations dans un champ table par TableAffiche(), j'ai deux solutions pour vous

1. Soit vous devrez remplacer TableAffiche() par TableAjouteLigne(), mais attention il faudrait écrire une seule ligne dans la syntaxe de parcours hLitPremier() et hLitSuivant(), pour des raisons de rapidité
2. Soit vous devrez terminer le procédure avec TableAffiche(), ensuite vous devrez ajouter un nouveau procédure qui détecte le champ table par la syntaxe TimerSys() si il y a tous les informations des nombres de ligne total, alors si c'est terminer alors vous passez le procédure suivante par exemple TableTrie()

Vous devrez coder ce programme pour la solution numéro 2 dont vous pourrez utiliser

// EDD (12/24) : Votre code ou votre procédure avec TableAffiche(), là j'ai mise le nom de procédure Liste()
PROCEDURE Liste()
// EDD (12/24) : Vous écrivez là les codes précédent dans votre programme
TableAffiche()
IF TimerSys("Temporaire", 100, 1) = 0 THEN
Info(ErreurInfo(errComplet))
END

// EDD (12/24) : C'est un nouveau procédure dont vous devrez écrire
PROCÉDURE Temporaire() // EDD (12/24) : Code qui détecte si le champ table est rempli
IF TableOccurrence(TBL_Personnel) > 0 THEN
FinTimerSys(1)
// EDD (12/24) : La suite des codes et des procédures TableAffiche()
TableTrie()
END

NB : La solution numéro 1 est la meilleure

Cordialement
Mr.RATSIMANDRESY
Niry Aina Eddy
Membre enregistré
391 messages
Posté le 16 décembre 2024 - 11:05
Bonjour et merci pour ces solutions intéressantes.
La 1ère solution me semble simple et efficace. A voir si elle est suffisamment rapide.
J'ai plus de doutes sur l'efficacité de la 2ème solution même si elle semble plus "Android friendly".