 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 19 Ago, 2016 11:34 am Asunto: 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í. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 19 Ago, 2016 3:50 pm Asunto: |
|
|
¡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! _________________
 |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 19 Ago, 2016 6:38 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 22 Ago, 2016 9:42 am Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 22 Ago, 2016 11:24 am Asunto: |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|