Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 15-06-2006
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 295
Poder: 22
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
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 04:55:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi