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();
}
}
}
}