Bonjour,

J'ai un probl�me lorsque j'essaie d'afficher des donn�es provenant d'une thread dans un Form. J'ai con�u ce petit prog. afin d'essayer de comprendre ce qui ce passe, car j'ai ce probl�me dans un plus gros programme. Or j'essaie d'afficher des donn�es � partir d'une thread et de la form. J'ai essay� plusieur chose les lock, semaphore etc... , mais le probl�me est que je ne peux pas arr�ter mon prog principal. de plus, les locks, ne fonctionnait pas bien.

Avec ce code j'ai deux probl�mes, le premier est un message d'erreur qui indique "Le canevas ne permet pas de dessiner." et le deuxi�me probl�me que je rencontre est que dans le coin sup�rieur de mon �cran, pas de ma form, de mon �cran, il y a du data qui s'affiche la

En passant j'utilise la version 5 et 2006 de bcb, et dans les deux versions j'ai le m�me probl�mes.

Voici le code de la thread:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
 
__fastcall test::test(bool CreateSuspended) : TThread(CreateSuspended){}
//---------------------------------------------------------------------------
void __fastcall test::Execute()
{
   unsigned char i = 255;
 
   while (1){
      Sleep(50);
      Form1->Affichage(i--);
   }
}
Et voici le code du programme principale :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
test   *threadtest;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{}
//---------------------------------------------------------------------------
 
// l'interval du timer est de 50 Ms
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   static unsigned char i = 0;
   Label1->Caption = i++;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormShow(TObject *Sender)
{
   threadtest = new test(false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
   threadtest->Suspend();
   delete threadtest;
}
//---------------------------------------------------------------------------
 
void TForm1::Affichage(int i)
{
   Label2->Caption = i;
}
Merci d'avance