FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cerrar formulario
Para probar que un código es correcto estoy forzando que tenga lugar un error al ejecutar un query en FB.
Código:
void __fastcall TfLisCar::FormCreate(TObject *Sender) { Query->Close(); Query->SQL->Text = "SELECT DISTINCT Codigo, Nombre Ls02 WHERE CodPrv = 45 ORDER BY Nombre, Codigo"; try { Query->Open(); } catch(Exception *Exc) { ShowMessahe(Exc->Message); this->Close(); return; } } |
#2
|
||||
|
||||
Supongo que no has hecho un copia->pega del código, porque no debería compilar, salvo que hayas creado un ShowMessahe
Código:
ShowMessahe(Exc->Message) |
#3
|
||||
|
||||
No, es una errata. Es evidente que es ShowMessage-
|
#4
|
||||
|
||||
Hola Angel.Matilla.
Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
Lo mejor creo que sería meter tu código en el constructor, redefiniendo el de TForm (override)
Si hay excepciones se destruye el objeto automáticamente y ni hace falta llamar a Close |
#6
|
||||
|
||||
Cita:
También lo había pensado (o incluso ANTES del Application->CreateForm), pero lo pongo dentro del formulario porque si me hace falta me basta llamar al evento para volve a ejecutar sin necesidad de tener que poner el código dos veces. |
#7
|
||||
|
||||
Close no funciona en el evento OnCreate (tampoco lo hace en delphi), si quieres que en él se cierre el formulario debes usar un mensaje:
Código PHP:
Código PHP:
Saludos. |
#8
|
||||
|
||||
Hola Angel.Matilla.
Cita:
Código PHP:
Te adjunto un demo para que puedas corroborarlo. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
El caso es que el evento OnShow puede ejecutarse varias veces y OnCreate sólo una. Para evitar, si es el caso, el query repetido debe usar un semáforo, o usar OnCreate con el ejemplo que expuse.
Saludos. |
#10
|
||||
|
||||
Cita:
Tal vez me estoy saltando algo (ya me dirás), pero no obtengo ninguna diferencia llamando directamente al evento WM_CLOSE: Código PHP:
Unit2.h: Código PHP:
Código PHP:
Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 04-09-2015 a las 09:18:05. |
#11
|
||||
|
||||
Gracias por vuestras respuestas.
Cita:
Cita:
Cita:
|
#12
|
||||
|
||||
Hola Angel.Matilla
Cita:
Cita:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#13
|
||||
|
||||
Cita:
Cita:
Lo extraño es que no te cierre el formulario tanto con WM_CLOSE como WM_MYCLOSE, ambos métodos cierren el formulario sin rechistar desde el evento OnCreate en BCB5, BCB6 y delphi7. Algo más debe haber en tu código que cuse ese comportamiento. Saludos. |
#14
|
||||
|
||||
No sé en Builder pero en Delphi sí que funciona. De hecho, el método Close llama al método Release y éste hace un PostMessage de CM_RELEASE y es el manejador de este mensaje quien llama al método Free. Claro que esto sucede sólo si el evento OnClose define Action como caFree. Si se usa el valor por defecto, caHide, entonces sí se debe usar un PostMesssage para poder ocultar la ventana.
// Saludos |
#15
|
||||
|
||||
Cita:
Saludos. Última edición por escafandra fecha: 04-09-2015 a las 20:10:19. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cerrar Formulario | jjmtzhdz | Varios | 7 | 19-11-2012 05:43:15 |
Cerrar Formulario | Red_Leon | OOP | 13 | 08-02-2010 10:22:07 |
cerrar formulario | Patricio | Varios | 2 | 04-07-2008 23:52:27 |
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo | jzginez | OOP | 5 | 22-06-2007 21:40:51 |
Cerrar conexión al cerrar formulario | arantzal | Conexión con bases de datos | 5 | 09-08-2006 12:43:52 |
|