Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Detectar cuando el raton sale de un control

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Detectar cuando el raton sale de un control Responder citando

Gracias por leer este mensaje.
Po eso que no se como detectar cuando el raton sale de encima de un control, ya se que C++ Builder 4.0 tiene un evento para ello pero yo utilizo C++ Builder 1.0 y me gustaria saber como poder hacerlo con los eventos que trae por defecto o con alguna llaada especial al API de windows. Se agradece cualquier sugerencia.
Volver arriba
Mensaje    Asunto: Detectar cuando el raton sale de un control Responder citando

Hola David:

Para hacer lo que necesitas podrías usar los eventos CM_MOUSEENTER y CM_MOUSELEAVE, el primero se dispara cuando el cursor del ratón entra en el control y el segundo cuando este sale.

Como ejemplo, aplicando esto a un TLabel (es lo mismo con cualquier otro), al que añadiremos dos eventos: OnMouseEnter (cuando el cursor este sobre la etiqueta y OnMouseExit (cuando el cursor salga del control), quedaría así:

// ### FICHERO: lsLabel.H ### //

code:

//---------------------------------------------------------------------------
#ifndef lslabelH
#define lslabelH
//---------------------------------------------------------------------------
#include <vcl\SysUtils.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Forms.hpp>
#include <vcl\StdCtrls.hpp>
//---------------------------------------------------------------------------
class TlsLabel : public TLabel
{
private:
TNotifyEvent FOnMouseEnter;
TNotifyEvent FOnMouseExit;
protected:
void CMMouseEnter(TMessage & msg);
void CMMouseLeave(TMessage & msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter)
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\vcl.h>
#pragma hdrstop

#include "lslabel.h"
//---------------------------------------------------------------------------
static inline TlsLabel *ValidCtrCheck() { return new TlsLabel(NULL); }
//---------------------------------------------------------------------------
__fastcall TlsLabel::TlsLabel(TComponent* Owner)
: TLabel(Owner)
{
}
//---------------------------------------------------------------------------
void TlsLabel::CMMouseEnter(TMessage & msg)
{
if (Enabled && FOnMouseEnter)
FOnMouseEnter(this);
}
//---------------------------------------------------------------------------
void TlsLabel::CMMouseLeave(TMessage & msg)
{
if (Enabled && FOnMouseExit)
FOnMouseExit(this);
}
//---------------------------------------------------------------------------
namespace Lslabel
{
void __fastcall Register()
{
TComponentClass classes[1] = {__classid(TlsLabel)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------



Luego instalarlo como un nuevo componente (Menú: Component > Install...), se añadirá en la pestaña 'Samples'.

Espero que se entienda así, sin haber añadido comentarios. En caso de que algo no se entienda dimelo.

Si te es mas comodo, o prefieres bajar los ficheros:

- Ficheros: lsLabel.h y lsLabel.cpp
http://cppbuilder.hypermart.net/over-cp.zip

- Y de este otro enlace un proyecto de ejemplo usando este componente, ya compilado por si quieres probarlo antes de instalarlo...
http://cppbuilder.hypermart.net/over-ej.zip


Saludos.

PD.: ¡Ojo! tal como se muestra solo es valido en BCB1, para usarlo en BCB3 en adelante, hay que hacer unas minimas modificaciones.

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.