[Borland C++] Odswieżanie pola Edit

0

Witam,
chcę zbudować aplikację, która w polu Edit (może być Memo) wyświetlać będzie zawartość bufora komunikacyjnego (transmisja po porcie szeregowym). Zapis do pola Edit jest zapętlony (tymczasowo pętlą for). I tutaj właśnie jest problem. Zawartość pola Edit nie jest odświeżana po każdym przebiegu pętli, tylko po zakończeniu wykonywania wszystkich operacji zawartych w funkcji SendClick. Przerwanie pętli jakimś komunikatem powoduje odświeżenie pola, ale nie tak ma to wyglądać, aby użytkownik musiał co chwila klikać OK. Próbowałem w pętli dodać opóźnienie Sleep(500), ale bez zmian... Proszę o wskazówki. Poniżej wklejam kod funkcji SendClick:

void __fastcall TForm1::SendClick(TObject *Sender)
{
   FILE *pstream;     
   if (hCommDev > 0)   
   {
      PurgeComm(hCommDev, PURGE_RXCLEAR);
      Sleep(1000);
      for (int i=0;i<10;i++)
      {
         Read_Comm(hCommDev, &Buffer_I[0], &Number_Bytes_Read, 4);
         if (Number_Bytes_Read > 0)       // jeżeli odebrano jakieś bajty
         {
            Edit1->Text = Buffer_I; //&Buffer_I[0];
         }
      }
   }
   else MessageBox(NULL, "Port nie został otwarty do transmisji.","Błąd", MB_OK);
}
0
  1. Wrzuc wysylanie do oddzielnego watku
    albo
  2. w kazdym przebiegu petli daj: Application->ProcessMessages(); czy jakos tak.
0

Druga ze wskazówek okazała się bardzo pomocna.
Dziękuję i pozdrawiam.

0

porada 2) to zaślepka.. na dluzsza mete jest bardzo zlą praktyką.

zamiast tego, postaw na formatce timer tickajacy co 1000ms i w jego tickevent wykonaj to, co teraz robisz wpetli.. w ten sposob osiagniesz swoj cel, a formatka bedzie spokojnie żyła swoim zyciem bez żadnych haków

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