FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
que evento usar?
hola gente, tengo el siguiente problema: desde un formulario (form1) uso a otro
(form2). Es decir, en la clausula uses de form1 tengo la unidad de form2. Lo que necesito es, cuando se cierra form2, actualizar informacion en form1 usando informacion de form2. El proceso de actualizacion lo realizo correctamente. Lo que no se es que evento de form1 tengo que usar para poder actualizar esos datos cuando se cierra form2. Me vendrian bien comentarios que no incluyan el uso de referencias circulares. desde ya, muchas gracias! |
#2
|
|||
|
|||
Hola...
¿Desde qué evento llamas a Form2 y como llamas a Form2 (Modal, No Modal, es MDIChild)? Si puedes poner el código, mejor... Saludos... |
#3
|
||||
|
||||
Cita:
Es decir, Haces el showModal, al cerrar el form2 lo ocultas (Action := caHide en el OnClose), actualizas desde el form1 y luego destruyes el form2. Si no usas ShowModal el problema se complica. En ese caso lo más sencillo es hacer la actualizacion desde el form2 (lo que incluye referencias circulares). Hay otras opciones, pero como te digo son más complejas. Por ejemplo desde el form1 puedes capturar en ejecución alguno de los eventos de cierre del form2 (OnClose, OnDestroy) y asignarles un procedimiento propio. De esta forma cuando "salten" esos eventos le llegará el control a ese procedimiento.
__________________
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. |
#4
|
||||
|
||||
Hola etioalex.
Si los forms involucrados están corriendo en un mismo equipo, otra manera que se me ocurre es usando FindWindow y el mensaje WM_COPYDATA. Pone esto en el evento OnClose del Form2: Código:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); var HandleReceptor: THandle; CopyDataStruct: TCopyDataStruct; begin CopyDataStruct.dwData:= 1; // cualquier valor para evaluar en Form1 HandleReceptor:= FindWindow(PChar('TForm1'),PChar('Form1')); if HandleReceptor <> 0 then SendMessage(HandleReceptor,WM_COPYDATA,Integer(Handle), Integer(@CopyDataStruct)); Action:= caFree; end; Código:
TForm1 = class(TForm) private procedure WMCopyData(var Msg : TWMCopyData) ; message WM_COPYDATA; public end; ... implementation procedure TForm1.WMCopyData(var Msg: TWMCopyData); begin if Msg.CopyDataStruct.dwData = 1 then ShowMessage('Form2 ha sido cerrado'); // acá hace lo que gustes end;
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 01-07-2010 a las 17:33:37. |
#5
|
|||
|
|||
solucionado!
muchas gracias por las respuestas a todos! ya pude resolver el problema, al final use la propiedad modal result, con el showmodal y andubo todo bien!
saludos! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Cómo usar las teclas F12 etc,y las teclas de dirección o flechas con el evento key? | Master23 | OOP | 1 | 03-04-2010 17:08:50 |
Hacer una pausa fuera del evento OnTimer y sin usar Sleep | DarkByte | Varios | 9 | 28-06-2007 04:08:00 |
Usar evento OnClick en imagen creada en ejecucion | ilcapo | C++ Builder | 8 | 12-04-2007 21:08:51 |
Usar Evento OnAfterSCroll de un TQuery? | jorllazo | Conexión con bases de datos | 12 | 04-10-2006 05:56:48 |
Llamar evento desde otro evento | nachito_tuc | OOP | 1 | 23-08-2006 21:37:43 |
|