Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   que evento se produce...? (https://www.clubdelphi.com/foros/showthread.php?t=27030)

clanmilano 10-11-2005 02:44:18

que evento se produce...?
 
Quisiera hacer lo siguiente:
estando en una ventana de ABM de ventas, cuando el usuario busca un determinado cliente en un dblookup y no lo encuentra, pueda apretar un botón en ese mismo form y llame al ABM de clientes y luego de darlo de alta regrese al ABM de ventas pudiendo elejirlo de ese dblookup.

No se que evento se ejecuta al cerrar la ventana de clientes y volver nuevamente a la de ventas. Probe con varios eventos y ninguno se producia: ni onshow, onactivate, ...
¿Se ejecuta algun evento sobre mi form de ventas en ese momento, es decir, al cerrar un form y quedar activo el de atras?

Espero su ayuda.
Muchas Gracias.

dec 10-11-2005 03:26:18

Hola,

Creo que lo correcto sería que mostraras el segundo formulario "modalmente", es decir, mediante su método "ShowModal". De ese modo, el primer formulario quedaría pendiente de su "resultado", el cual obtendrías en la variable "ModalResult" del segundo formulario: además podrías utilizar este, puesto que estos resulados son "mrOk", "mrCancel", etc. Por supuesto, el segundo formulario cuenta con el correspondiente evento "OnClose", pero, para mí tengo que mostrar el formulario "modalmente" sería lo suyo. Ya dirás algo. ;)

Lepe 10-11-2005 12:14:41

Si no quieres trabajar con ShowModal por alguna razón extraña, siempre puedes crearte tus propios eventos:

Código Delphi [-]
TElegido = procedure (Cliente:String; Codigo:Integer) of object;

Tform1 = ....
public
   Elegido :TElegido
end;

procedure TForm1.boton1Click;
begin
  if assigned(elegido) then // cuando se pulse el boton lanzamos el evento
    Elegido (edit1.text, spinEdit1.AsInteger);
end;


ahora en Tform2 (el que llamará a Form1)

Tform2 = ...

   private
     procedure ElElegido(Cliente:String; Codigo:Integer);
           // declaramos el procedimiento que recoge el evento de Form1
           // por supuesto tiene que llevar los mismos parámetros; 
           // el nombre le ponemos el que más corage nos dé.

procedure form2Create(..)
begin
  form2 := Tform2.Create(application);
  form2.Elegido := ElElegido // asignamos el evento de Form2 con la rutina 
//                   ElElegido, para que nos llegue a esta última la información
end;

procedure Tform2.ElElegido(Cliente:String; Codigo:Integer);
begin
//  En form2 se pulsó el boton1, y ejecutamos lo que queramos.
  ShowMessage(cliente);
end;

saludos

clanmilano 10-11-2005 14:04:00

Me parece que no comprendieron cual era mi duda realmente, tal vez yo no me explique bien.

Lo que yo hago es teniendo el 1er form abierto, abro otro (2do form) con "showmodal". Quiero saber que evento se produce sobre el 1er form (que por supuesto queda detras sin poder accederse hasta que no se cierra el 2do.) cuando se cierra el 2do. Ya que quisiera poder realizar cierta accion de refrezcado sobre la tabla de clientes, para poder ver en un lookup del 1er form el nuevo cliente dado de alta en el 2do form.

Gracias...

Lepe 10-11-2005 17:34:20

Si lo haces con ShowModal, no necesitas ningún evento, y es lo que estaba explicando dec.

Código Delphi [-]
procedure TForm1.Button1Click();
begin

Form2 := Tform2.Create(nil);
try 
  if Form2.ShowModal = mrOK then
    showmessage(' es ok')
  else
    Showmessage(' se ha cancelado');
finally 
  Form2.Free;
end;
end;
Cuando llegue al Form2.ShowModal, el código de Form1 se quedará congelado, y hasta que no se asigne la propiedad Form2.ModalResult, no se volverá al código de Form1. En este caso, no necesitas ningún evento.

Form2.ModalResult se asigna cuando:
- Tienes un BitBtn en Form2. La propiedad Kind del BitBtn indica el modalResult que se devolverá al hacer clic sobre este botón.
- Cierras el form2 (creo que se devuelve mrCancel).


saludos

lucasarts_18 10-11-2005 17:45:05

Cita:

Empezado por clanmilano
Lo que yo hago es teniendo el 1er form abierto, abro otro (2do form) con "showmodal". Quiero saber que evento se produce sobre el 1er form

Ninguno, el mensaje se le está enviando al otro objeto, es decir el Form2

Hasta Luego -

andres1569 10-11-2005 18:53:37

Hola.

Como ya te han comentado, si lanzas de forma modal dicho Form2, no necesitas eventos para saber cuándo se cierra, lo controlas desde el mismo código que lo lanza. Pero quizás también podrías implementar esto a nivel de Datasets, en la tabla de Clientes, en los eventos AfterPost y AfterDelete refrescas la tabla o el campo que sirve de LookUp (supongo que estás utilizando dos componentes TTable ligados a Clientes, uno para las ABM y otro para el Lookup), así te sirve para más formularios donde se requiera un comportamiento similar.

clanmilano 10-11-2005 18:58:47

Muchas gracias..tratare de implementarlo, creo que ahora si me sacaron esa duda...MUCHAS GRACIAS...no dejo de pensarlo..que buen foro che!!...saludos!!


La franja horaria es GMT +2. Ahora son las 06:01:34.

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