Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Sobreescribir evento en componente

Hola, leyendo los ultimos mensajes sobre componentes he intentado hacer uno sobreescribiendo los eventos onenter y onexit. Se trata tansolo de un edit el cual coje un color si esta focused y vuelve al original si no.

Código Delphi [-]
unit ColorEdit;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TColorEdit = class(TEdit)
  private
    { Private declarations }
    original_color : TColor;
    FFocusColor : TColor;
    Assigned_exit : TNotifyEvent;
    Assigned_enter : TNotifyEvent;
    procedure SetFocusColor(cl : TColor);
    procedure SetOnEnter(n : TNotifyEvent);
    procedure SetOnExit (n : TNotifyEvent);
    procedure Execute_Enter(sender : TObject);
    procedure Execute_Exit(sender : TObject);
  protected
  public
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
    property FocusColor : TColor read FFocusColor write SetFocusColor default clWhite;
    property OnEnter : TNotifyEvent read Assigned_enter write SetOnEnter;
    property OnExit  : TNotifyEvent read Assigned_exit write SetOnExit;
  end;
procedure Register;
implementation
constructor TColorEdit.Create(AOwner: TComponent);
begin
  inherited;
  color := clSilver;
  parentctl3d := false;
  Ctl3D := false;
  OnEnter := Execute_enter;
  OnExit  := Execute_exit;
end;
procedure TColorEdit.SetOnEnter(n : TNotifyEvent);
begin
        Assigned_enter := n;
end;
procedure TColorEdit.SetOnExit(n : TNotifyEvent);
begin
        Assigned_exit := n;
end;
procedure TColorEdit.Execute_enter(sender : TObject);
begin
        original_color := color;
        color := FFocusColor;
        repaint;
        Assigned_enter(sender);
end;
procedure TColorEdit.Execute_exit(sender : TObject);
begin
        color := original_color;
        repaint;
        Assigned_exit(sender);
end;
procedure TColorEdit.SetFocusColor(cl : TColor);
begin
        FFocusColor := cl;
end;
procedure Register;
begin
  RegisterComponents('Samples', [TColorEdit]);
end;
end.

Lo que hace es asignar a OnExit y OnEnter un procedure que ejecuta el codigo de cambio de color y un supuesto procedure (assigned_enter, assigned_exit) que se le haya asignado, lo que ocurre es que no salta en el momento de salir o entrar de dicho componente supongo que se tiene que programar a nivel de mensajes, cosa que no he hecho nunca. Si alguien me echa un mano...Por otra parte, tambien pense en sobreescribir el metodo repaint, y escoger el color alla, pero tampoco me funcionaba ¿hay alguna manera de detectar cuando se esta pintando un TEdit? Gracias por adelantado.

Última edición por coso fecha: 04-10-2008 a las 15:49:46.
Responder Con Cita
  #2  
Antiguo 04-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
...me voy a solucionar yo mismo dejo aqui el link. saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Evento cuando se crea un componente sobre el mio delphiladero OOP 1 17-06-2008 13:51:10
evento click de un bitbtn creacion componente satabel Varios 3 31-08-2005 17:02:37
evento on keypress y componente dinamico Rabata OOP 4 26-07-2005 22:54:38
Como añadir un nuevo evento a un componente Javi2 Varios 6 20-12-2004 14:25:12
Evento en componente dentro de frame Kafu OOP 9 02-06-2003 18:19:27


La franja horaria es GMT +2. Ahora son las 08:38:21.


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