Rafraichir Main depuis un thread [Résolu]

Messages postés
11
Date d'inscription
jeudi 17 août 2006
Dernière intervention
8 février 2010
- 19 janv. 2010 à 09:26 - Dernière réponse :
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 23 janv. 2010 à 19:24
Bonjour à tous,

voila mon problème :

j'ai crée un Thread que je lance depuis ma form Main. Dans ce Thread, diverses opérations sont effectuées et j'aimerais mettre à jour l'affichage de mon Main à partir de ce Thread : j'ai une ListBox qui affiche le status des opérations et je dois modifier un fichier txt avec les logs.

J'ai cherché de longues heures sur internet mais ne trouve rien.

D'avance merci pour vos messages ;)
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 19 janv. 2010 à 15:33
3
Merci
Salut,

non, non,

tu crées une procedure dans le Thread qui regroupe tous les appels à la mise à jour de l'interface (Label, ListBox, etc.)

et tu appels cette procédure avec Synchronize.

un exemple ici
l'exemple n'est pas terrible mais le principale y est pour la compréhension du mécanisme


[hr]@+Cirec
[hr]

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 19 janv. 2010 à 13:48
0
Merci
Salut,
dans l'unité du Thread, tu peux mettre l'unité de ta fiche juste après "implementation", tu pourras ainsi appeller les composants de ta fiche (MaFiche.TrucChose).
Mais le plus propre (et efficace et rapide) reste quand même de créer un objet liste TStringList en mémoire, de le modifier depuis le thread puis de tout copier dans ta listbox une fois que le traitement est fini, puis de libérer l'objet.

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
11
Date d'inscription
jeudi 17 août 2006
Dernière intervention
8 février 2010
- 19 janv. 2010 à 14:35
0
Merci
Salut,

merci pour ta réponse, je vais tester ça ;).

Salutations.
Commenter la réponse de syphon22
Messages postés
11
Date d'inscription
jeudi 17 août 2006
Dernière intervention
8 février 2010
- 19 janv. 2010 à 15:40
0
Merci
Salut cirec,

merci pour la réponse, j'ai fait exactement ça et ça marche nickel ;-).

Merci à tous, a+, syphon22
Commenter la réponse de syphon22
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 20 janv. 2010 à 04:11
0
Merci
Salut,

Franchement, je ne vois pas l'intérêt de créer un Thread qui s'amuse à mettre à jour l'interface principale. Et surtout quand il s'agit de modifier un fichier .txt.

Bref, je serais plutôt de l'avis de Bacterius.
Commenter la réponse de Caribensila
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 20 janv. 2010 à 06:01
0
Merci
Salut,
ben moi en fait, j'ai toujours considéré que le thread le plus à même de gérer l'interface graphique, c'est le thread principal (celui qui est créé quand on lance le processus), et que tous les autres threads créés doivent simplement effectuer des calculs et stocker les résultats dans une mémoire globale en attente d'affichage par le thread principal

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
11
Date d'inscription
jeudi 17 août 2006
Dernière intervention
8 février 2010
- 20 janv. 2010 à 10:02
0
Merci
Salut Caribensila,

pour répondre à ton message, je n'ai pas créer le thread uniquement pour mettre à jour l'interface principale ou encore modifier un .txt, mais pour d'autres fonctionnalités.

Cordialement, A+.
Commenter la réponse de syphon22
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 23 janv. 2010 à 19:24
0
Merci
non c'est faux ...

dès l'instant que tu as besoin de voir le résultat, du traitement en cour, à l'écran, il faut passer par la méthode Synchronize du Thread qui est prévue pour ce genre de situation:
Exemple de code sur Delphifr

il suffit de regarder les nombreux exemples disponibles, tutoriels et démos fournis avec Delphi ... tous vont dans le même sens et dès qu'on s'en éloigne les problèmes commencent



[hr]@+Cirec
[hr]
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.