![]() |
![]() |
| Paypal | 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 |
|