Hola DCelso:No, efectivamente los eventos OnMouseOver y OnMouseLeave no vienen con ninguna versión de C++Builder, por eso mismo lo que muestra el código anterior es como crear un nuevo componente derivado de TLabel que si los tenga, y esto vale en cualquier versión, incluida la 5, a continuación te pego el código aquí con las pequeñas adaptaciones necesarias para que funcione en BCB3, 4 y 5, el del enlace era para BCB1, pero como veras apenas cambia mas que nada añadir en algunos sitios la palabra PACKAGE:
// ### FICHERO: lsLabel.H ### //
code:
//---------------------------------------------------------------------------
#ifndef lsLabelH
#define lsLabelH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TlsLabel : public TLabel
{
private:
TNotifyEvent FOnMouseEnter;
TNotifyEvent FOnMouseExit;
protected:
void CMMouseEnter(TMessage & msg);
void CMMouseLeave(TMessage & msg);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter)
VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave)
END_MESSAGE_MAP(TLabel)
public:
__fastcall TlsLabel(TComponent* Owner);
__published:
__property TNotifyEvent OnMouseEnter = {read=FOnMouseEnter, write=FOnMouseEnter};
__property TNotifyEvent OnMouseExit = {read=FOnMouseExit, write=FOnMouseExit};
};
//---------------------------------------------------------------------------
#endif
// ### FICHERO lsLabel.CPP ### //
code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop#include "lsLabel.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(TlsLabel *)
{
new TlsLabel(NULL);
}
//---------------------------------------------------------------------------
__fastcall TlsLabel::TlsLabel(TComponent* Owner)
: TLabel(Owner)
{
}
//---------------------------------------------------------------------------
namespace Lslabel
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TlsLabel)};
RegisterComponents("_Leo", classes, 0);
}
}
//---------------------------------------------------------------------------
void TlsLabel::CMMouseEnter(TMessage & msg)
{
if (Enabled && FOnMouseEnter)
FOnMouseEnter(this);
}
//---------------------------------------------------------------------------
void TlsLabel::CMMouseLeave(TMessage & msg)
{
if (Enabled && FOnMouseExit)
FOnMouseExit(this);
}
//---------------------------------------------------------------------------
y listo, con esto tenemos un nuevo componente llamado 'TlsLabel' que al instalarlo quedara bajo la pestaña '_Leo' y que es identico al TLabel pero con los dos nuevos eventos.
Saludos.