FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como asignar evento MouseEnter y MouseLeave a componente
Buenas... He creado un componente apartir de la Clase TCustomControl
Código:
class PACKAGE TMiComponente : public TCustomControl Con los dos primeros no he tenido problemas, los hereda de TCustomControl y con declararlos de la forma: Código:
__published: __property OnMouseMove; __property OnMouseUp; Situacion diferente afecta a MouseEnter y MouseLeave que supongo no son eventos de TCustomControl . Creo que tengo que capturar los mensajes MouseEnter y MouseLeave Código:
//Mesaje entrar raton en componente void __fastcall CMMouseEnter (TMessage Message); //Mesaje salir raton del componente void __fastcall CMMouseLeave (TMessage Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter); VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave); END_MESSAGE_MAP (TCustomControl); void __fastcall TMiComponente::CMMouseEnter(TMessage Message) { ..................... } void __fastcall TMiComponente::CMMouseLeave(TMessage Message) { ..................... } en fase de diseño cuando forman parte de otros componentes.. Alguna idea... Gracias Nota: HE intentado borrar el mensaje anterior enviado por error pero no doy LO SIENTO Última edición por NEG1414 fecha: 03-02-2014 a las 11:52:57. |
#2
|
||||
|
||||
Hola NEG1414.
A modo de guía, debería ser similar a esto: MiComponente.h Código:
#ifndef MiComponenteH #define MiComponenteH #include <SysUtils.hpp> #include <Classes.hpp> #include <Controls.hpp> class PACKAGE TMiComponente : public TCustomControl { private: // User declarations TNotifyEvent FOnMouseEnter; TNotifyEvent FOnMouseLeave; protected: void __fastcall CMMouseEnter(Messages::TMessage &Message); void __fastcall CMMouseLeave(Messages::TMessage &Message); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter) MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave) END_MESSAGE_MAP(TCustomControl) public: // User declarations __fastcall TMiComponente(TComponent* Owner); __published: // IDE-managed Components __property TNotifyEvent OnMouseEnter= {read= FOnMouseEnter, write= FOnMouseEnter}; __property TNotifyEvent OnMouseLeave= {read= FOnMouseLeave, write= FOnMouseLeave}; //... }; #endif Código:
#include <vcl.h> #pragma hdrstop #include "MiComponente.h" #pragma package(smart_init) // ValidCtrCheck is used to assure that the components created do not have // any pure virtual functions. static inline void ValidCtrCheck(TMiComponente *) { new TMiComponente(NULL); } __fastcall TMiComponente::TMiComponente(TComponent* Owner) : TCustomControl(Owner) { FOnMouseEnter = 0; FOnMouseLeave = 0; } void __fastcall TMiComponente::CMMouseEnter(Messages::TMessage &Message) { if (FOnMouseEnter) FOnMouseEnter(this); } void __fastcall TMiComponente::CMMouseLeave(Messages::TMessage &Message) { if (FOnMouseLeave) FOnMouseLeave(this); } namespace Micomponente { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid(TMiComponente)}; RegisterComponents("Samples", classes, 0); } }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
Sencillamente perfecto.... Gracias
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como asignar un valor a una variable global desde un componente | paquechu | Varios | 6 | 15-01-2014 21:10:18 |
Asignar Evento | AndyLupa | Varios | 4 | 17-06-2011 18:54:53 |
Cómo codificar en el evento (incluso asignado) de un componente | dec | OOP | 58 | 31-01-2010 05:48:30 |
Como añadir un nuevo evento a un componente | Javi2 | Varios | 6 | 20-12-2004 13:25:12 |
|