Utiliser MessageDlg dans un thread ? [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 18-12-2004 à 11:56:00
Bon finallement, j'ai trouvé quelque chose pour éviter cela :
Code :
|
Marsh Posté le 18-12-2004 à 16:40:54
En effet, MessageBox ça fonctionne.
En fait dans un thread tu ne peux pas toucher à la VCL comme ça.
MessageBox étant un appel direct à une fonction de l'API Win32, ça passe.
Pour ton problème de MessageDlg, il aurait pu se résoudre comme ceci :
FLastMessage := UM_GetErrorMessage('UMLO04');
Synchronize(ShowLastMessage);
où FLastMessage est un attribut "string" de ton thread, et avec ShowLastMessage qui est une procédure de ton thread contenant juste :
MessageDlg(FLastMessage, mtError, [mbOK], 0);
Dès que tu veux modifier quelque chose qui appartient à l'interface graphique tu seras obligé de faire comme ça (passer par Synchronize, qui ne te permet que d'appeler une fonction sans paramètre).
Marsh Posté le 18-12-2004 à 17:17:42
Merci pour cette info également, j'avais vu sur quelques pages sur les thread et delphi les histoires de synchronisation de fenêtres mais ça me paraissait compliqué (bien que puissant ) pour ce que je voulais faire
Merci encore pour l'info, c'est cool !
Marsh Posté le 18-12-2004 à 11:05:32
Salut à tous,
Je n'arrive pas à utiliser MessageDlg dans un thread... si jamais je le fait, Delphi me renvoie ce message d'erreur en debug :
Voilà le code que j'utilise pour la partie qui pose problème :
La finalité de tout ça : c'est de renvoyer un message d'info/d'erreur selon le cas à l'utilisateur dans un thread qui fait une boucle de traitement.
Cette partie de code est utilisée pour uploader des fichiers via FTP pour remettre dans le contexte.
Merci de vos conseils et d'une aide éventuelle car je continue à chercher mais toujour rien... d'où ce post