Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2010
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Crear un TEdit personalizado

Holas a todos estoy con el siguiente problema:

Resulta que estoy queriendo hacer un componente del tipo TEdit que cuando reciba el foco cambie el color fondo y cuando lo pierda vuelva ser de color blanco; además que cuando se presione la tecla ENTER salte al siguiente control o sea simulando la tecla TAB.

¿Como hago para crear un componente VCL personalizado que me haga esto?

Gracias
Responder Con Cita
  #2  
Antiguo 23-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Para el cambio de color, crearía las propiedades para cada color, sobreescribiría los métodos WMSetFocus y WMKillFocus donde asignaría el color que deseo según la circunstancia. Para lo del foco si no quieres utilizar algo como la propiedad KeyPreview del formulario que lo contiene, puedes sobreescribir el método KeyPress llamando al método SelectNext del contenedor del mismo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 23-01-2010
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
¿No te refieres más bien a los mensajes WM_SETFOCUS y WM_KILLFOCUS?

En todo caso, creo que son más adecuados los métodos DoEnter y DoExit. Casualmente me encontré este ejemplito que creo le viene como anillo al dedo a mcsebas.

// Saludos
Responder Con Cita
  #4  
Antiguo 23-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por roman Ver Mensaje
En todo caso, creo que son más adecuados los métodos DoEnter y DoExit. Casualmente me encontré este ejemplito que creo le viene como anillo al dedo a mcsebas.
Sabes que estuve buscando ESE ejemplo!.. recordaba que estaba en el foro, solo que creí haberlo escrito yo, y busqué solo en mis hilos ...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 23-01-2010
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Smile

Chicos me viene sirviendo todo de pelos pero estoy teniendo problemas con el tema de simular la tecla TAB. Me da como que la variable Key no existe si bien en el evento KeyPress si existe. Aquí les dejo el codigo y me corrigen porfis.

Gracias.

Última edición por mcsebas fecha: 23-01-2010 a las 08:20:15.
Responder Con Cita
  #6  
Antiguo 23-01-2010
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Ahhhhhh que pasoooooooooo !!! con el fragmento de codigo

Código Delphi [-]
unit CajaTexto;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
type
  TCajaTexto = class(TEdit)
  private
    { Private declarations }
  protected
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure DoKeyPress; override;
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Mis Componentes', [TCajaTexto]);
end;


////////////////////////
// Recibiendo el Foco //
////////////////////////
procedure TCajaTexto.DoEnter;
begin
    inherited;
    Color:=clInfoBk;
end;


///////////////////////
// Perdiendo el Foco //
///////////////////////
procedure TCajaTexto.DoExit;
begin
    inherited;
    Color:=clWindow;
end;


////////////////////////
//Simulando Tecla TAB //
////////////////////////
procedure TCajaTexto.DoKeyPress;
begin
      inherited;
      if Key = #13 then
      begin
        Key := #0;
        Perform(WM_NEXTDLGCTL,0,0);
      end
end;
end.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Message Dialog personalizado Alexis De la Cr OOP 5 11-11-2008 23:41:09
Crear Componente Personalizado. ingmichel Internet 3 04-09-2008 20:35:10
Como hacer TEdit Personalizado (maximo 10 caracteres, con una mascara, etc) mancurnino Conexión con bases de datos 2 08-03-2008 03:00:47
crear enlace personalizado en delphi 7 arespremium Internet 1 02-08-2007 22:05:24
¿Como crear un reporte personalizado? AndGaG Impresión 1 04-06-2006 10:59:08


La franja horaria es GMT +2. Ahora son las 19:01: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