Ver la Versión Completa : Mensajes entre formularios
Ju2an
15-06-2006, 16:01:30
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
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:
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:
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:
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.
Ju2an
15-06-2006, 19:13:09
Muchas gracias, ahora lo veo
Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.