Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Resultado ModalResult de un Form

Muy buenas,
Os resumo mi problema. Tengo una aplicación con un Form principal que llama a otro form. Pues bien cuando este form secundario se cierra se tiene que actualizar el principal según se le haya dado al botón Aceptar o al botón Cancelar.
Mi intención era usar el valor ModalResult pero no me funcionaba, así que he recurrido al foro y buscando por ahí encontré un hilo de Román que resumiendo dice
Cita:
El método Close por su parte, cuando se trata de una ventana modal, lo único que hace es poner el valor de ModalResult en mrCancel.
Mi pruegunta entonces es como lo puedo hacer.

Gracias a todos.
Responder Con Cita
  #2  
Antiguo 02-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola vejerf,
¿Podrías decirnos como es tu código?
¿Cómo que no funciona? ¿Estás guardando el valor en alguna propiedad o variable una vez que se recibe la "orden" mrXXXX?

¿Que hilo es ese?

Tal vez podamos hecharte una mano, pero me gustaría saber por lo menos el hilo en cuestión y parte de tu código.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 02-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Basta buscar en la ayuda de Delphi y encontrarás un ejemplo bastante claro:

Código Delphi [-]
procedure TMyDialogBox.OKButtonClick(Sender: TObject);

begin
  ModalResult := mrOK;    /// ACEPTARRRRRR
end;

procedure TMyDialogBox.CancelButtonClick(Sender: TObject);
begin
  ModalResult := mrCancel;      ////  CANCELARRRRRRR

end;

This code brings up the modal dialog from Form1 when a button is clicked.  It causes a Beep if the OK button is clicked.

procedure TForm1.Button1Click(Sender: TObject);

begin
  if MyDialogBox1.ShowModal = mrOK then           //// RECOGER EL RESULTADOOOOOOO
    Beep;

end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 02-04-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Ante todo Delphius darte las gracias por tu colaboración.
El código que llama al Form secundario es el siguiente:
Código Delphi [-]
with TAgregarUnidadForm.create(nil) do
  try
    if ShowModal = mrOk then
    begin
      //Sentencias varias
    end;
  finally
    free;
  end;
Por otra parte en el TAgregarUnidad tengo dos botones, uno Aceptar que le asigno el valor mrOk y otro Cancelar al que le asigno mrCancel.

No sé donde puede estar el fallo, claro que voy aprendiendo Delphi sobre la marcha y no es que sea un experto.

Por otra parte el hilo de Román al que hago mención es este hilo.

Gracias de nuevo...
Responder Con Cita
  #5  
Antiguo 02-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
vejerf ya ¿Viste el código que muestra Neftali?

Creo que estás errado en la forma de trabajar con ventanas modales.

Este es un ejemplo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Opcion: TModalResult;
begin
  Opcion := form2.ShowModal;
  case Opcion of
  mrOK: ShowMessage('Aceptar');
  mrCancel: ShowMessage('cancelar');
  end;
end;

Asumí que la forma está en AutoCreate. Si no es así, lo que debes hacer es crear la forma y luego mostrarla Modalmente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Opcion: TModalResult;
    Frm2: TForm2;
begin
  Frm2 := TForm2.Create(nil);
  Frm2.ShowModal;
  case Opcion of
  mrOK: ShowMessage('Aceptar');
  mrCancel: ShowMessage('cancelar');
  end;
end;

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 02-04-2008
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,

El código que muestras vejerf parece correcto, y, la idea de que el "ModalResult" lo determinen la oportuna propiedad de los botones "Aceptar" y "Cancelar", también. Así que lo que no se entiende es que no te funcione tal como se espera. Yo, personalmente, acabo de probarlo, y, efectivamente, funciona. Por lo que no sé qué decir... sino que algo por ahí se nos escapa, pero, que, no tiene que ver con lo que discutimos, sino con alguna otra cosa.

Código Delphi [-]
uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TForm2.Create(nil) do
  try
    if ShowModal() = mrOk then
      ShowMessage('Aceptaste el diálogo')
    else
      ShowMessage('Cancelaste el diálogo');
  finally
    Free();
  end;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 02-04-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Yo pienso que mientras Vejerf no nos muestre el codigo de los botones del formulario modal no podremos hacer aproximaciones al problema.
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #8  
Antiguo 02-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Tienes razón Dec, funciona. Yo empecé a hacerlo así y me arrojó excepciones Y bueno, lo hice de la forma casera

Es como dices, hay algo que se le está escapando a vejerf... y a nosotros...
El problema puede que venga de otro lado.

Y sería oportuno que explicase mejor que quiere decir: "no me funcionaba".

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 02-04-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Ya creo que puedo responder el por qué tenía ese problema.

La cosa es que yo desconocía que al asignar las variables mrOk o mrCancel a los botones estos ya de por sí me cerraban el form.

Yo lo que hacía cuando pulsaba uno era llamar al método Close y según decía el hilo que nombré antes este devolvía mrCancel.

Al final el fallo estaba en mi desconocimiento sobre la forma de proceder de estas variables o métodos (mrOk/mrCancel)... ya no sé si son una cosa u otra...

Muchas gracias por vuestra ayuda... sin vuestras respuestas creo que podía estarle dando vueltas una y otra vez sin llegar a ninguna conclusión...
Responder Con Cita
  #10  
Antiguo 02-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por vejerf Ver Mensaje
Ya creo que puedo responder el por qué tenía ese problema.

La cosa es que yo desconocía que al asignar las variables mrOk o mrCancel a los botones estos ya de por sí me cerraban el form.

Yo lo que hacía cuando pulsaba uno era llamar al método Close y según decía el hilo que nombré antes este devolvía mrCancel.

Al final el fallo estaba en mi desconocimiento sobre la forma de proceder de estas variables o métodos (mrOk/mrCancel)... ya no sé si son una cosa u otra...

Muchas gracias por vuestra ayuda... sin vuestras respuestas creo que podía estarle dando vueltas una y otra vez sin llegar a ninguna conclusión...
Me alegro que entiendieras como se usa y logres descubrir el fallo.
Para sacarte la duda, mrXXX no son ni variables ni métodos. Son CONSTANTES.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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
Como llamar form desde otros form y regresar a la linea que se estaba ejecutando Willy Rodrigo C++ Builder 1 03-08-2007 19:36:23
Como anular el ModalResult de un botón ? carlosmari Varios 13 14-03-2007 23:43:39
Form modal deja que el form llamante tome el foco tata Varios 6 17-05-2006 11:51:37
Como anular el ModalResult de un botón ? carlosmari Conexión con bases de datos 5 13-11-2003 15:50:31
Como salir del create con modalresult jdiazan OOP 7 30-06-2003 18:23:05


La franja horaria es GMT +2. Ahora son las 03:07:00.


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