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 15-06-2006
Avatar de Ju2an
Ju2an Ju2an is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
Ju2an Va por buen camino
Mensajes entre formularios

Hola, tengo que hacer un programa que envie mensajes entre formularios, alguien podria darme una mano con un ejemplo?
Hablo de Tmessage, sendmessage, etc...

Muchas gracias
Responder Con Cita
  #2  
Antiguo 15-06-2006
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Uso mensajes, a ver si te sirve.

En una Unit crea constantes para los mensajes que vas a emplear, y haz un use en la interface de todos los forms que harán uso de la mensajería.
Usa la numeración de mensajes a partir de $7FFF, ya que son los que están libres. Por ejemplo:

Código:
unit MisMensajes;
 
const
  WM_USER = $7FFF;

  WM_MUESTRA_TIEMPO       = WM_USER + 100;
  WM_MUESTRA_CONEXION     = WM_USER + 101;
  WM_MUESTRA_SUMA         = WM_USER + 102;
 
  WM_REFRESH_USUARIO      = WM_USER + 501;
  WM_REFRESH_EMPRESA      = WM_USER + 502;
  WM_REFRESH_ENTIDAD      = WM_USER + 503;
  WM_REFRESH_FACTURA_EMI  = WM_USER + 512;
  WM_REFRESH_FACTURA_REC  = WM_USER + 513;
 
  WM_CAMBIO_EMPRESA       = WM_USER + 900;
  WM_CAMBIO_FECHA         = WM_USER + 901;

Cuando en un form se realice alguna acción que quieras que se enteren otros forms mandas un mensaje:

Código:
 
  PostMessage(Application.Handle, WM_REFRESH_EMPRESA, ElCodigo, 1);
Puedes usar SendMessage de la misma manera (mirate la ayuda). Además puedes pasar 2 parámetros de tipo entero largo, muy util.

En los Forms donde quieras que se procesen determinados mensajes debes meter un componente TApplicationEvents y programar el evento OnMessage. (Delphi 7 trae este componente en Additional, si usas una versión anterior puedes instalar las rusas (RX), que contienen también este componente).

Un ejemplo de como programar el evento OnMessage:

Código:
procedure TFrmM_Empresas.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if (Msg.Message = WM_REFRESH_EMPRESA) then begin
    if Msg.wParam > 0 then begin 
      if Msg.lParam = 1 then begin
        Qry.Locate('CODIGO', Msg.wParam, [loCaseInsensitive]);
      end;
      if Msg.lParam = 2 then begin
        Qry.Close;
        Qry.Open;
        Qry.Locate('CODIGO', Msg.wParam, [loCaseInsensitive]);
      end;
    end;
  end;
end;

Lo he escrito muy deprisa... espero no haber metido la pata en nada...

Saludos.
Responder Con Cita
  #3  
Antiguo 15-06-2006
Avatar de Ju2an
Ju2an Ju2an is offline
Registrado
 
Registrado: jun 2006
Posts: 5
Poder: 0
Ju2an Va por buen camino
Muchas gracias, ahora lo veo

Saludos
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
Mensajes WM anda entre sesiones?¿? marceloalegre Varios 18 18-10-2005 17:30:11
Pasar datos entre formularios davitcito OOP 1 29-06-2005 09:48:03
transladar una tecla entre dos formularios Er_Manué Varios 1 05-11-2004 17:46:59
Valores entre formularios mdi ctronx Varios 5 16-06-2004 22:19:01
Pasaje de variables entre formularios santiago14 Varios 1 17-09-2003 19:11:05


La franja horaria es GMT +2. Ahora son las 18:53:51.


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