Cita:
Empezado por roman
¿Y ese delete fSelRec que tienes en el case 0 no tendrá algo que ver?
|
Fíjate que después del delete hay un return con lo que el resto del código no se ejecuta. No obstante después de poner el mensaje seguí haciendo pruebas y el problema no está dónde yo creía. He cambiado un poco la estructura del programa y lo he dejado así:
Código:
lPrueba = false;
nFcargo = 1;
switch (nListView)
{
case 0:
delete fSelRec;
Mensaje(3, "No seleccionó ningún recibo.", "Volver");
Button2Click(NULL);
return;
case 1:
DecodeDate(dFcargo, Year, Month, Day);
for (nItem = 0; nItem < fSelRec->Lista->Items->Count; nItem ++)
if (fSelRec->Lista->Items->Item[nItem]->Checked && StrToInt(fSelRec->Lista->Items->Item[nItem]->SubItems->Strings[4]) == Month)
{
lPrueba = true;
break;
}
}
fForBln->Show();
fForBln->IniBarra("Preparando recibos");
fForBln->Barra->MaxValue = fSelRec->Lista->Items->Count;
if (!lPrueba)
{
cAux = "¿Desea generar los recibos seleccionados con fecha de cargo " + dFcargo.FormatString("dd/mm/yyyy', '") +
"\nen la fecha propuesta u otra fecha?";
nFcargo = Mensaje(2, cAux, dFcargo.FormatString("dd/mm/yyyy") + "\nFecha propuesta\nOtra fecha");
}
Con esa estrutura he comprobado que hasta que no pasa por la línea
fForBln->IniBarra("Preparando recibos") no hay problema. Ese fForBln es un formulario que tiene un TImage, un TPanel, un TCGauge y un TLabel; lo uso para las típicas pantallas de
Espere un momento mientras corre una barra y en esa llamada IniBarra lo que hay es esto:
Código:
void __fastcall TfForBln::IniBarra(AnsiString cMensaje)
{
Barra->MaxValue = 0;
Barra->MinValue = 0;
Barra->Progress = 0;
LblBar->Caption = cMensaje;
Application->ProcessMessages();
this->Refresh();
}
No hay absolutamente ninguna referencia a ningún TListView. Estoy bastante desconcertado porque no es el único sitio en hago uso de ese modelo de código.