Ya lo he resuelto, pongo el código:
void __fastcall TForm1::mnuComprobarcorreoExecute(TObject *Sender)
{
   if (TreeView1->Items->Count == 0) {
     ShowMessage("No hay ninguna cuenta establecida\n"
              "pulsa sobre nueva cuenta para establecer una.");
   }
   else {
      String host = "";
      String userid = "";
      String pasword = "";
      int puerto = 0;//el if que estaba aquí sobra
      for (int i = 0; i <contes>Count; i++) {
         host = pop3->ReadString(contes->Strings[i],"host","");// y aquí sustituyendo lo que había por lo que hay
         userid = pop3->ReadString(contes->Strings[i],"userid","");
         pasword = pop3->ReadString(contes->Strings[i],"pasword","");
         puerto = pop3->ReadInteger(contes->Strings[i],"puerto",0);
         if (correu->Connected()) {
            correu->Disconnect();
         }
         if (!correu->Connected()) {
            correu->Host = host;
            correu->Username = userid;
            correu->Password = pasword;
            correu->Port = puerto;
            if (pop3->ReadBool(contes->Strings[i],"conexionsegura",false)){
               correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
            }
            else {
               correu->IOHandler = NULL;
            }
               //ShowMessage(contes->Text);
               //ShowMessage(contes->Strings[i]);
               correu->Connect();
               Application->ProcessMessages();
               int num_mensajes = correu->CheckMessages();
               if (num_mensajes==0){
                  //Label12->Font->Color = clBlack;
                  //Label12->Caption = "No hay mensajes en "+ListView4->Items->Item[y]->Caption+".";
                  //Label12->Visible = true;
               }
               else {
                  //ShowMessage("Hay mensajes...");
                  for (int e=1;e<num_mensajes>Clear();
                        correu->RetrieveHeader(e,mensa);
                        TListItem *ite;
                        ite = lista->Items->Add();
                        ite->Caption = IntToStr(e);
                        ite->SubItems->Add(mensa->From->Address);
                        ite->SubItems->Add(mensa->Subject);
                        ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
                        ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
                        ite->ImageIndex = 3;
                        ite->SubItemImages[1] = 2;
                        Application->ProcessMessages(); //Esta línea es clave
                        SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
                  }
               }
               correu->Disconnect();
         }
      }
   }
}