PDA

Ver la Versión Completa : ¿Se puede añadir a un TPanel OnMouseLeave?


Tonio
18-06-2005, 17:45:20
He econtrado un ejemplo, en unos componentes de un curso, pero el TPanel en el que lo tiene implementado, no me funciona.
La pregunta, como pongo en el enunciado, ¿Se puede?, si es afirmativo, necesitaría un empujoncito inicial.
Gracias.
Tonio

roman
18-06-2005, 20:44:46
Sí se puede pero creando una nueva componente derivada de TPanel. En ella creas un manejador para el mensaje CM_MOUSELEAVE (no estoy 100% seguro de la exactitud del nombre pero es algo así).

A tu componente le agregas un evento declarando una variable privada

FOnMouseLeave: TNotifyEvent y una propiedad publicada:

property: OnMouseLeave: TNotifyEvent
read FOnMouseLeave write FOnMouseLeave;

En el manejador del mensaje CM_MOUSELEAVE lanzas el evento:



if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);


// Saludos

Tonio
20-06-2005, 21:46:51
Gracias por tu rápida respuesta, yo tardo algo más.
He estado haciendo pruebas, éste es el código que he empleado:


unit PanelM;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
TPanelM = class(TPanel)
private
FOnMouseLeave: TNotifyEvent;
{ Private declarations }
protected
{ Protected declarations }
public
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('MiPanel', [TPanelM]);
end;

end.


¿Que hago mal?, no sale el evento en el inspector de objetos.

Gracias.
Un saludo.

Antonio.

roman
20-06-2005, 21:50:55
Simplemente baja la declaración de la propiedad a la sección published.

Esta es la diferencia entre pública (public) y publicada (published). Ambas son secciones públicas pero la segunda es para publicar las propiedades en el inspector de objetos.

// Saludos

Tonio
20-06-2005, 23:14:37
Gracias, funcionó.

Sabía que era yo el que lo hacía mal.
Son varias las respuestas que he recibido de Román, creo que a todas las preguntas que he hecho al foro y siempre correctas.

Saludos.
Antonio.