Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2011
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
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);
ademas he heredado el Evento onClick

Código:
__published

   __property OnClick;
Cuando utilizo el componente en una Aplicacion y hago click con el boton derecho del raton sobre el, en tiempo de ejecucion, observo que no accedo al evento Onclick de este

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
Responder Con Cita
  #2  
Antiguo 15-02-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código Delphi [-]
procedure TMiControl.WMLButtonDown(Message: TWMLButtonDown);
begin
  inherited; // Llamada al manejador de la clase ancestra

  {
    Aquí el código personal
  }
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 15-02-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
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};
};
funcion.
Código:
void __fastcall  TCustomControl1::WMLbuttonDown (TMessage Message)
{
/**/
    if (FOnClick) {//Vemos si fue asignado           
        FOnClick(this);//Llamamos a la función que fue asignada
    }
}
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
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


La franja horaria es GMT +2. Ahora son las 21:36:40.


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