Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
cerrar form desde otro

Yo sigo preguntando.
Tengo un form que llama a otro pero cuando le doy a cancelar devuelve un valor para que cierre el form padre, le pongo close y no cierra, le pongo form.close y tampoco cierra aunque la orden si la ejecuta.

gracias
Responder Con Cita
  #2  
Antiguo 17-04-2007
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,

¿Estás mostrando el formulario "modalmente"? Cuando muestras un formulario de este modo puedes recabar su "resultado" con una serie de constantes predefinidas:

Código Delphi [-]
with TForm2.Create(nil) do
try
  if (ShowModal() = mrOk) then
  begin
    // mrOK
  end;
finally
  Free;
end;

En todo caso no veo yo porqué en principio no puedes hacer algo así:

Código Delphi [-]
with TForm2.Create(nil) do
try
  if (ShowModal() <> mrOk) then
  begin
    Form1.Close();
  end;
finally
  Free;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 17-04-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Si la verdad es que es un llamada a form modal.
Llamo al form2 desde el form1 porque se abre automaticamente, si en el form2 se da a cancelar, se tiene que cerrar automaticamente el form1, pero si le pongo form1.cancel, no hace nada, y si le pongo ademas form1.free, me lo cierra pero el programa se me queda congelado.
Responder Con Cita
  #4  
Antiguo 17-04-2007
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,

Tal como yo lo veo puedes hacer lo que he dicho más arriba. Ten en cuenta que no tienes que codificar nada, es decir, que al mostrar un formulario "modalmente" este ya retorna de por sí un resultado: "mrCancel", "mrOk", etc.

De ahí que puedas mostrar el formulario 2 desde el formulario 1, y, si se cierra el formulario 2 con "algo" distinto a "mrOk"... nada te impide cerrar el formulario 1. Es lo mismo de antes:

Código Delphi [-]
// Creo una instancia del formulario 2
with TForm2.Create(nil) do
try
  // Muestro el formulario modalmente y compruebo si el resultado
  if (ShowModal() <> mrOk) then
  begin
    // Si el resultado es distinto de "mrOk"... cierro el formulario 1
    Form1.Close();
  end;
finally
  Free;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 17-04-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
pues sigue sin funcionar, como no sea que lo tengo metido en un form.activate, .....

de todas formas nose porque no me funciona poner close, y con free se me bloquea, lo unico que me funciona es hide, pero estoy viendo que en todos los forms que estoy usando si pongo free despues del close, porque ahi el close si me funciona, añadiendo el free me sale una ventana de dialogo que pone esto:
"Projetc programa.exe raise exception class EAbstractError with message 'Abstract Error'. Process stopped. Use step or run to continue, pero eso en tiempo de ejecucion.
Responder Con Cita
  #6  
Antiguo 18-04-2007
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
Saludos al foro.
Si el form2 lo madas llamar en el evento OnActivate del form1, es un ciclo sin fin, la primera vez que creas form1 y se hace la ventana activa, disparas su evento OnActivate porque le pasas el foco; al momento de regresar de la llamada modal de form2, le pasas de nuevo el foco a form1, disparando de nuevo su evento OnActivate y llama de nuevo a form2. Te recomiendo mover el código del OnActivate al OnShow o al OnCreate.
__________________
eLcHiCoTeMiDo - Rompecorazones profesional
Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos?
Salva a un nylon, usa prendas de piel de foca
Responder Con Cita
  #7  
Antiguo 18-04-2007
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
se agradece la respuesta. Tambien he probado poner el free dentro de un boton onclick para cerrarlo, pero da fallo al final porque dice area de violacion de memoria.

en fin pasa algo sino uso el free?
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
llamar a procedimientos desde otro form David OOP 8 06-09-2006 18:28:12
Cambiar foco desde otro form Sandy656 Varios 3 25-08-2006 14:29:41
Cerrar un Form MDI al abrir otro MDI David OOP 7 17-08-2006 18:14:37
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08
Cerrar mi programa desde otro Sr_Sombrero API de Windows 2 02-12-2004 22:12:09


La franja horaria es GMT +2. Ahora son las 06:17:25.


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