Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2007
jlrbotella jlrbotella is offline
Miembro
 
Registrado: ene 2007
Posts: 185
Poder: 18
jlrbotella Va por buen camino
Puntero procedimiento a evento

Hola Amigos:

¿cómo puedo convertir el procedimiento

procedure AppMessage(var Msg: tagMSG; var Handled: Boolean);

a Evento Application.OnMessage?.

Cuando lo asigno de esta manera, el compilador me genera el siguiente error:

Application.OnMessage := AppMesage;

[Pascal Error] consumos_main.pas(178): E2009 Incompatible types: 'method pointer and regular procedure'

Muchas Gracias,
JL
Responder Con Cita
  #2  
Antiguo 22-05-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
El Msg no debería ser de tipo TMsg en lugar de tagMSG?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 22-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
El error te lo dice todo:
Cita:
Incompatible types: 'method pointer and regular procedure'
Tu le estas asignando un procedure normal y lo que tienes que asignarle es un metodo de un objeto. Asi que declara ese procedure dentro de un objeto y entonces te dejara.

Por ejemplo:
Código Delphi [-]
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  //
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage:= AppMessage;
end;
Responder Con Cita
  #4  
Antiguo 23-05-2007
jlrbotella jlrbotella is offline
Miembro
 
Registrado: ene 2007
Posts: 185
Poder: 18
jlrbotella Va por buen camino
Hola:

Pero si el procedure esta en otro unit y no pertenece a ninguna clase como lo convierto.

Saludos,
JL
Responder Con Cita
  #5  
Antiguo 23-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No entiendo tu empeño, es como si quisieras pasarle un texto a una imagen, si ya lo dice el mensaje, son incompatibles

¿Que te cuesta meter el procedure dentro de una clase? Por ejemplo:
Código Delphi [-]
unit Unit2;

interface

uses Windows, Sysutils, Classes, Forms;

type
  TDummy = class
  public
    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
  end;

implementation

{ TDummy }

procedure TDummy.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  // Aqui lo que quieras
end;

var
  Dummy: TDummy;

initialization
  Dummy:= TDummy.Create;
  Application.OnMessage:= Dummy.AppMessage;
finalization
  Application.OnMessage:= nil;
  Dummy.Free;
end.
Responder Con Cita
  #6  
Antiguo 23-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
a ver, yo creo que el pollo es más pequeño, no hay que engordarlo.

Usa un componente ApplicationsEvents en la ventana que quieras, en el inspector de objetos da doble clic al evento OnMessage y dentro de él llamas a tu rutina.

Código Delphi [-]
procedure TFormXXX.AplicationsEvents1Message(var Msg: TMsg; var Handled: Boolean);
begin 
   AppMessage( Msg, Handled);
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Llamar evento desde otro evento nachito_tuc OOP 1 23-08-2006 21:37:43
relacionar un procedimiento con un evento de un objeto aranel OOP 3 20-10-2005 21:50:36
Puntero del raton Canastera Gráficos 2 24-06-2005 18:23:07
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
Asignar procedimiento al evento OnClick neon OOP 2 28-10-2004 11:53:21


La franja horaria es GMT +2. Ahora son las 18:05:38.


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