![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problema capturar Mensajes
Buenas... He creado un componente (Heredado de un TCustomControl) en el que capturo dentro de el , el Mensage "Pulsar boton Izquierdo" de la manera
Código:
void __fastcall WMLbuttonDown (TMessage Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_LBUTTONDOWN, TMessage,WMLbuttonDown); END_MESSAGE_MAP (TCustomControl); Código:
__published __property OnClick; Sin Embargo si elimino la captura del mensage "Pulsar boton Izquierdo" que he descrito anteriormente del componente, y hago click sobre el en tiempo de Ejecucion y si me accede al Evento OnClick. Mi pregunta es: ¿son incompatibles el evento OnClick Heredado y la captura de Mensage "Pulsar boton Izquierdo", o es posible utilizar los dos (uno dentro del mismo componente y el otro en la Aplicacion) al con un Click del raton sobre el componente. Espero Haberme Explicado Bien Gracias |
#2
|
||||
|
||||
No sé qué tanto pueda ayudarte porque para mi la sintaxis de C++ Builder es prácticamente ininteligible
![]() Pero, basándome en lo que sé al respecto en Delphi, podría decirte que quizá en tu manejador del mensaje no estás llamando al manejador ancestro. Por ejemplo, el equivalente en delphi sería:
// Saludos |
#3
|
|||
|
|||
mmm hice una prueba rápida y al menos a mí me va bien en rad 2010, ahora bien al código que publicas le faltan un par de cosas (quizás ya las tengas y no es eso).
1 un puntero a una función si es OnClick podría ser del tipo “void … (TObject* obj)”. 2 en el property “OnClick” debe leer y escribir en el puntero que declaramos anteriormente. 3 cuando llegue el mensaje, nosotros llamamos a “FOnClick” desde “WMLbuttonDown”. Te dejo como quedaría el .h y la función “WMLbuttonDown”, para que funcione el OnClick. h. Código:
typedef void __fastcall (__closure* OnObject)(TObject* val); class PACKAGE TCustomControl1 : public TCustomControl { private: OnObject FOnClick;//FOnClicke es un puntero del tipo void … (TObject* val), aunque tú puedes cambiarle a uno del tipo que quieras. void __fastcall WMLbuttonDown (TMessage Message); public: __fastcall TCustomControl1(TComponent* Owner); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_LBUTTONDOWN, TMessage,WMLbuttonDown); END_MESSAGE_MAP (TCustomControl); __published://Leemos y escribimos en FOnClick __property OnObject OnClick={read=FOnClick, write=FOnClick}; }; Código:
void __fastcall TCustomControl1::WMLbuttonDown (TMessage Message) { /**/ if (FOnClick) {//Vemos si fue asignado FOnClick(this);//Llamamos a la función que fue asignada } } |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar los mensajes de mysql en delphi | jjaen26 | MySQL | 0 | 21-12-2006 06:52:28 |
Capturar mensajes NET SEND | DanForever | Internet | 0 | 29-05-2006 15:11:20 |
Capturar mensajes largos por TClientSocket | allende | Internet | 5 | 04-04-2006 16:45:53 |
Capturar Mensajes de error | daly | Varios | 5 | 27-10-2005 20:56:46 |
Capturar mensajes de error de SQL server | User_baja1 | SQL | 2 | 10-02-2005 18:11:21 |
![]() |
|