Witam
Mam taki problem:
Mając 3 przyciski na formie chcę by po naciśnięciu 1, jego blok był wykonywany tak długo aż nacisnę inny przycisk. Próbowałem to zrobić przy pomocy while(true) ale to zawiesza program :/
W jaki sposób to wykonać?
Z góry dziękuje za pomoc
Pozdrawiam
0
0
bool Flaga = false ;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Enabled = false ; //UWAGA WAŻNE!!!
while(true)
{
Application->ProcessMessages();
if(Flaga)
{
break ;
}
// Miejsce na kod w Pętli
}
Flaga = false ;
ShowMessage("Koniec bloku Pętli") ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Flaga = true ;
Button1->Enabled = true ;
}
//---------------------------------------------------------------------------
Pozostaje jeszcze problem zamknięcia aplikacji , w przypadku nie naciśnięcia Button2 przy
uruchomionym kodzie pętli ,
Należy obsłużyć zdarzenie OnCloseQuery dla Formy :
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
Flaga = true ;
}
//---------------------------------------------------------------------------
To sposób 'na piechotę' .
Można jeszcze wykorzystać wątki lub obiekt klasy TThread ( wątki obiektowo ) .