Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-12-2010
Avatar de dalyla2010
dalyla2010 dalyla2010 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 16
Poder: 0
dalyla2010 Va por buen camino
Talking Pasar variables entre formas

Hola a todos,

Lo que quiero hacer es que al presionar un boton me aparesca una consulta para buscar un cliente, y al darle doble clic a un grid me devuelva el id del cliente. En este caso la forma me devuelva un integer y no un mrOk, mrYes, etc.

Quiero que el proceso de la forma que llama se detenga en el show. Pero este continua, no se detiene como puedo cambiarlo a processmessage o algo asi, para que se detenga hasta que yo cierre mi forma.

Estoy usando delphi 2009
Responder Con Cita
  #2  
Antiguo 28-12-2010
Avatar de dalyla2010
dalyla2010 dalyla2010 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 16
Poder: 0
dalyla2010 Va por buen camino
Solucion.

Ok resuelto, de hecho la respuesta ya estaba en este foro, solo que por nombre no la encontraba, bien...

La forma padre, la tengo como MDIChild, supongo que no hay problema si es MDIForm, esta manda llamar al hijo con hijo.ShowModal. El hijo debera ser un fsNormal, con la propiedad visible = false;

Enla unidad padre tendra esta parte de codigo o algo similar:
Código:
try
      hija := TfrmBuscar.Create(self);
      hija.ShowModal;
    finally
      if hija.resultado <> '' then
        edcliente.Text := hija.resultado;
    end;
Aclarando que resultado es una variable publica en la forma hija.

Supongo que de este modo talvez se puedan pasar mas datos. Esto esta muy concreto, espero a alguien le sirva este resumen.
Responder Con Cita
  #3  
Antiguo 28-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por el aporte.
Responder Con Cita
  #4  
Antiguo 28-12-2010
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Por cierto, encantador el avatar de Harley Quinn.

Saludos
Responder Con Cita
  #5  
Antiguo 28-12-2010
Avatar de dalyla2010
dalyla2010 dalyla2010 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 16
Poder: 0
dalyla2010 Va por buen camino
jajaja gracias >0<
Responder Con Cita
  #6  
Antiguo 28-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dalyla2010.

Otra forma que podés utilizar para enviar y recibir datos entre forms es:

Form1 ( Receptor )
Código Delphi [-]
type
  TForm1 = class(TForm)
   ...
  private
    FResultado: string;
    procedure RecibirMsg(var Msg: TMessage); message WM_USER + 300;
  public
  end;
...
interface

uses Unit2;
...
procedure TForm1.RecibirMsg(var Msg: TMessage);// Capturar mensaje
begin
  FResultado:= PChar(Msg.LParam); // FResultado <- cadena enviada desde Form2
end;
...

Form2 ( Remitente )
Código Delphi [-]
...
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Value: string;
begin
  Value:= 'SALUDOS DESDE FORM2'; // lo que quieras que reciba Form1 en FResultado
  SendMessage(FindWindow('TForm1','Form1'), WM_USER + 300, 0, DWORD(Pchar(Value)));
  Action:= caFree;
end;

La función FindWindow debe especificar el nombre de clase y de form que correspondan al receptor.
En este caso utilizé un string pero podés pasar otros tipos de datos.

( Totalmente de acuerdo con ElKurgan )

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-12-2010 a las 21:14:21.
Responder Con Cita
  #7  
Antiguo 29-12-2010
Avatar de dalyla2010
dalyla2010 dalyla2010 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 16
Poder: 0
dalyla2010 Va por buen camino
Gracias, si esta mas complicado, tal vez se pueda simplificar con una funcion y solo llamarla, y asi utilizarla mas veces. Excepto por el FindWindow, lo demas es constante?
Responder Con Cita
  #8  
Antiguo 29-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dalyla2010.

Se puede hacer un procedimiento para enviar el mensaje, lo podrías ubicar en la interface de alguna unidad de uso común.

Algo como:
Código Delphi [-]
procedure EnviarMensaje(Cadena, FrmClassName: string);
begin
  SendMessage(FindWindow(PChar(FrmClassName), PChar(Copy(FrmClassName, 2, 255))),
              WM_USER + 300, 0, DWORD(Pchar(Cadena)));
end;

Un ejemplo de uso sería:
Código Delphi [-]
   EnviarMensaje('MENSAJE ENVIADO','TFormReceptor');

Pero el procedimiento para recibir el mensaje tendrías que incluirlo en cada form receptor, es decir:
Código Delphi [-]
...
 private
    FResultado: string;
    procedure RecibirMsg(var Msg: TMessage); message WM_USER + 300;
...
implementation

procedure TFormReceptor.RecibirMsg(var Msg: TMessage);
begin
  FResultado:= PChar(Msg.LParam); 
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 29-12-2010 a las 16:28:55.
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
Pasar variables entre programas Belaix Varios 5 24-11-2008 07:06:31
exportacion de variables entre formas distintas zidfrid C++ Builder 0 02-10-2007 03:33:47
Como pasar datos entre dos formas modales creadas dinamicamente Tauro78 Varios 6 24-02-2007 15:03:39
Problema al pasar datos entre 2 formas maguib Varios 6 10-03-2005 20:19:33


La franja horaria es GMT +2. Ahora son las 01:24:53.


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