Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
No puedo ocultar un formulario

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í.
Responder Con Cita
  #2  
Antiguo 19-08-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pero el error parece muy claro: "No se puede cambiar la visibilidad del formulario en los eventos 'OnShow' ni 'Onhide' del mismo.", de modo que comprueba que no estás haciendo precisamente eso...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 19-08-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No queda claro lo que estás haciendo. Tal como indica el master dec, si intentas usar Hide dentro del evento OnShow obtendrás el error mencionado. Pero, especifiquemos un poco. Si tienes un formulario fForBln, y dentro de su evento OnShow tratas de usar el método fForBln->Hide(), obtendrás ese error.

Sin embargo, parece que estás haciendo otra cosa, ya que las llamadas a fForBln->Show() y fForBln->Hide() están en el mismo pedazo de código que muestras. Entoces, da la impresión de que haces ambas cosas desde otro formulario, y eso no debería dar el error mencionado. De ser así, tendrías que examinar qué es lo que tienes en el evento OnShow de fForBln.

LineComment Saludos
Responder Con Cita
  #4  
Antiguo 22-08-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por las respuestas. Como dice roman desde el OnActivate o el OnCreate del formulario fDevMan estoy haciendo el Show() y el Hide() del otro formulario fForBln. Este último sólo tiene cuatro elementos y lo uso para mostar una barra de progreso que vale para toda la aplicación; sólo tiene cuatro elementos: TImage, TPanel, TCGauge y TLabel. En el evento OnShow del mismo sólo tengo puesto esto:
Código:
void __fastcall TfForBln::FormShow(TObject *Sender)
{
     Barra->Progress = 0;
     this->Refresh();
}
Y el problema es que me funciona bien en cualquier otro sitio de la aplicación.
Responder Con Cita
  #5  
Antiguo 22-08-2016
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
¡Solucionado! Ha bastado con poner el foco en uno de los elementos de ese fForBln para que desaparezca el error.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ocultar formulario modal arturom Varios 2 27-01-2010 11:56:45
Como ocultar el formulario cuando se usa free Lizette Varios 4 03-02-2009 15:24:44
Ocultar formulario. Markos1970 OOP 1 29-09-2005 20:16:21
ocultar consola y no formulario acl_gandalf Varios 1 18-04-2005 15:06:34
¿Cómo puedo Ocultar la Unidad de CD? adolfoz API de Windows 17 30-09-2004 23:51:36


La franja horaria es GMT +2. Ahora son las 15:58:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi