Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2005
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 22
Tonio Va por buen camino
¿Se puede añadir a un TPanel OnMouseLeave?

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
Responder Con Cita
  #2  
Antiguo 18-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:


Código Delphi [-]
if Assigned(FOnMouseLeave) then
  FOnMouseLeave(Self);

// Saludos
Responder Con Cita
  #3  
Antiguo 20-06-2005
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 22
Tonio Va por buen camino
Gracias por tu rápida respuesta, yo tardo algo más.
He estado haciendo pruebas, éste es el código que he empleado:

Código Delphi [-]
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.

Última edición por roman fecha: 20-06-2005 a las 21:48:58. Razón: agregar etiquetas [delphi] para mayor legibilidad
Responder Con Cita
  #4  
Antiguo 20-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #5  
Antiguo 20-06-2005
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 22
Tonio Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:54:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi