[BCB]Wykonywanie bloku danych az do...

0

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
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 ) .

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0