Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

No puedo ocultar un formulario

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: No puedo ocultar un formulario Responder citando

Tengo una aplicación en BCB 6 que al lanzar uno de los formularios muestra otro (Form->Show()) que está normalmente oculto pero que cuando termina lo que está haciendo y quiero volver a ocultarlo (Form->Hide()) me da un error de ejecución.
Cita:
Cannot change Visible in OnShow or OnHide

He probado a ponerlo ese trozo de código en el OnCreate, el OnActivate, OnShow y OnPaint y no hay manera que funcione bien.
Código:
fForBln->Show();
fForBln->Barra->MinValue = 0;
fForBln->Barra->Progress = 0;
fForBln->IniBarra("Cargando recibos");

fDevMan->Lista->Items->Clear();

fPersona->Query->Close();
fPersona->Query->SQL->Text = "SELECT A.Apellidos, A.Nombre, A.Codigo, A.Referencia, B.Importe"
                             "FROM Persona A, Recibos B"
                             "WHERE A.CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia')"
                             "AND A.CodPrv = B.CodPrv AND A.Codigo = B.Codigo"
                             "AND B.RefInt = :RefInt AND B.Iban <> ''"
                             "AND B.Situacion NOT IN (SELECT Valor FROM Instalacion WHERE Etiqueta = 'SitRec' AND Situacion = 1)"
                             "ORDER BY Apellidos, Nombre, Codigo";
fPersona->Query->ParamByName("RefInt")->AsString = fSelEmi->pSelItem->SubItems->Strings[5];
fPersona->Query->Open();
fForBln->Barra->MaxValue = fPersona->Query->RecordCount;

for (; !fPersona->Query->Eof; fPersona->Query->Next())
{
     fForBln->Barra->Progress ++;
     pItem = fDevMan->Lista->Items->Add();
     pItem->Caption = fPersona->Query->FieldByName("Apellidos")->AsString + ", " + fPersona->Query->FieldByName("Nombre")->AsString;
     pItem->SubItems->Add(fPersona->Query->FieldByName("Referencia")->AsString);
     pItem->SubItems->Add(FormatFloat("##,##0.00 ¤", fPersona->Query->FieldByName("Importe")->AsFloat));
     pItem->SubItems->Add(fPersona->Query->FieldByName("Codigo")->AsInteger);
}
try
{
     fForBln->Hide();     // AQUÍ DA EL ERROR
}
catch(...)
{
}

Todas las funciones, variables, elementos, etc. que se usan están perfectamente definidos. Y he probado con y sin el try...catch del final, y exactamente este mismo procedimiento lo uso en muchos sitios de la aplicación y sólo me da error aquí.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

¡Que tal Angel!
Tuve el mismo problema con una venta y recuerdo que no podía cerrarla ya que inexplicablemente perdía el "foco" de alguno de los componentes, lo que hice, fue que antes de cerrar (hide) la ventana, asignaba el foco a un TEdit o algún otro componente existente en el formulario, posteriormente usaba la sentencia ->Hide(); y asunto arreglado, intenta de esa manera.

Saludos!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

El problema es que no puedes ocultar una ventana en el evento OnShow prueba desde otro evento o dispara un timer que lo haga en escaso tiempo.


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

escafandra escribió:
El problema es que no puedes ocultar una ventana en el evento OnShow prueba desde otro evento o dispara un timer que lo haga en escaso tiempo.

Pero es que la ventana que quiero ocultar no es la del formulario que he llamado, es otro distinto.
César C. Salazar González escribió:
lo que hice, fue que antes de cerrar (hide) la ventana, asignaba el foco a un TEdit o algún otro componente existente en el formulario, posteriormente usaba la sentencia ->Hide(); y asunto arreglado, intenta de esa manera.

Lo malo es que ese formulario sólo tiene estos componente (uno de cada): TImage, TPanel, TCGauge y TLabel. Voy a probar con el TPanel. Ya os diré.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

César C. Salazar González escribió:
lo que hice, fue que antes de cerrar (hide) la ventana, asignaba el foco a un TEdit o algún otro componente existente en el formulario, posteriormente usaba la sentencia ->Hide(); y asunto arreglado, intenta de esa manera.

Tebías razón, como siempre, César. Me bastó poner un SetFocus() a uno de los elementos del formulario y ya no me da error.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.