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 28-11-2008
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
Cambiar El Fondo De Un Edit

Hola Amigos Pregunta Simple..como Cambio El Color De Fondo De Un Edit Por Medio De Codigo Al Oprimir Un Boton..


Ejemplo: Los Siguientes Campos Marcados No Estan Rellenados

Gracias
Responder Con Cita
  #2  
Antiguo 28-11-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si este componente te da alguna idea:

Código Delphi [-]
{ *********************************************************************** }
{                                                                         }
{ DecComp - Unos sencillos componentes                                    }
{                                                                         }
{ Copyright (c) 2005 dec                                                  }
{ bajo la licencia GNU GPL >> ver en "licencia.txt"                       }
{                                                                         }
{ *********************************************************************** }

unit UFocoEdit;

interface

uses
  Messages, SysUtils, Classes,
  Controls, StdCtrls, Graphics,

  UTypesDecComp;

// Sencillo componente descendiente de TEdit que añade
// dos propiedades que permiten establecer el color y
// la fuente del mismo al obtener el foco del usuario
//
type
  TFocoEdit = class(TEdit)
  private
    FAcercade: TAcercade;
  published
    property Acercade: TAcercade read FAcercade write FAcercade stored false;
  private
    FCopiaColor: TColor;    
    FCopiaFuente: TFont;    
    FFontEnfocado: TFont;   
    FColorEnfocado: TColor;
    procedure FijarFuenteEnfocado(valor: TFont);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  protected
    procedure CMExit(var Message: TWMNoParams); message CM_EXIT;
    procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
  published
    property FuenteEnfocado: TFont read FFontEnfocado write FijarFuenteEnfocado;
    property ColorEnfocado: TColor read FColorEnfocado write FColorEnfocado default clWhite;
  end;

implementation

// Recursos/cadenas
//
{$I ..\inc\rsDecComp.inc}

// Constructor del componente. Damos al color
// por defecto que ha de tener el componente
// cuando este obtenga el foco. Creamos las
// instancias de TFont necesarias
//
constructor TFocoEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Color := $00F7F7F7;
  FColorEnfocado := clWhite;
  FCopiaFuente := TFont.Create;
  FFontEnfocado := TFont.Create;
end;

// Destructor del componente
//
destructor TFocoEdit.Destroy;
begin
  FFontEnfocado.Free;
  FCopiaFuente.Free;
  inherited Destroy;
end;

// Aprovechar que el componente obtiene el foco
// para cambiar el color y la fuente del mismo
// según lo determinara el usuario
//
procedure TFocoEdit.CMEnter(var Message: TCMGotFocus);
begin
  inherited;
  FCopiaColor := Self.Color;
  FCopiaFuente.Assign(Self.Font);
  Self.Color := FColorEnfocado;
  Font.Assign(FFontEnfocado);
end;

// Aprovechar que el componente pierde el foco
// para establecer el color y la fuente del mismo
// mendiante los valores previamente guardados en
// las variables correspondientes
//
procedure TFocoEdit.CMExit(var Message: TWMNoParams);
begin
  inherited;
  Self.Color := FCopiaColor;
  Self.Font.Assign(FCopiaFuente);
end;

// Establecer la fuente que podrá verse
// en el componente cuando este tome el foco
//
procedure TFocoEdit.FijarFuenteEnfocado(valor: TFont);
begin
  if FFontEnfocado <> valor then
    FFontEnfocado.Assign(valor);
end;

end.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 28-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, hay varias formas de hacer lo que quieres, una sería verificando cada edit.

Código Delphi [-]
function TForm1.Validar: Boolean;
var
 Band : Boolean;
begin
 Band := True;
 if Trim(Edit1.Text)='' then
  begin
   Edit1.Color := clYellow;
   Band := False;
  end;
 if Trim(Edit2.Text)='' then
  begin
   Edit2.Color := clYellow;
   Band := False;
  end;
 if Trim(Edit3.Text)='' then
  begin
   Edit3.Color := clYellow;
   Band := False;
  end;
 Result := Band;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 if Not Validar then
  showmessage('existe algún edit vacío');
end;

pero despues si introduce texto tendría que volver a pintar del color inicial, para ello puedes utilizar el evento OnExit del edit y le asignas el mismo evento a los demas edit.

Código Delphi [-]
procedure TForm1.Edit1Exit(Sender: TObject);
begin
 if (Trim(TEdit(Sender).Text)<>'') and (TEdit(Sender).Color=clYellow) then
  TEdit(Sender).Color := clWhite;
end;

Ahora también podrías utilizar el evento OnExit para pintar de un color u otro y también le asignas ese evento a todos tus edits. Pero para ver si alguno esta de otro color, tienes recorrer tus componentes y verificar.

Código Delphi [-]
procedure TForm1.Edit1Exit(Sender: TObject);
begin
 if Trim(TEdit(Sender).Text)<>'' then
  TEdit(Sender).Color := clWhite
 else
  TEdit(Sender).Color := clYellow;
end;

O no pintar y verificar si esta vació, si es así no dejarle salir del control hasta que no llene algo y lo mismo le asignas el mismo evento a tus demas edits.

Código Delphi [-]
procedure TForm1.Edit1Exit(Sender: TObject);
begin
 if Trim(TEdit(Sender).Text)='' then
  TEdit(Sender).SetFocus;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 29-11-2008
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
bueno, según lo que preguntas...
Cita:
..como Cambio El Color De Fondo De Un Edit Por Medio De Codigo Al Oprimir Un Boton..
te puedo dar la siguiente referencia, en el evento OnClick de un Button coloca esto:
Código Delphi [-]
Edit1.Color := clRed;

pero si lo que quieres es cambiar el color de fonde de un Edit si no tiene textos escritos, entonces de la siguiente manera:

Código Delphi [-]
if TRIM(Edit1.Text) = '' then
  Edit1.Color := clRed;

pero si deseas un procedimiento para calcular de todos los Edit de una Form cual es el que no tiene textos escritos y cambiar su color de fondo, entonces, implementa esto:

Código Delphi [-]
procedure ValidarEn(aForm: TForm; aColorVacio, aColorEscrito: TColor);
var
  vIndex: Integer;
begin
  for vIndex := 0 to aForm.ComponentCount -1 do
    if  aForm.Components[vIndex] is TEdit then
      case Length(TRIM((aForm.Components[vIndex] as TEdit).Text)) of
        0:  (aForm.Components[vIndex] as TEdit).Color := aColorVacio;
        else
            (aForm.Components[vIndex] as TEdit).Color := aColorEscrito;
      end;
end;

y en el evento OnClick de un Button, coloca esto:

Código Delphi [-]
ValidarEn(Form1, clRed, clWhite);

te sirve de algo mi ayuda???
espero que si!

saludos!
aeff!

Última edición por aeff fecha: 29-11-2008 a las 12:22:42.
Responder Con Cita
  #5  
Antiguo 02-12-2008
tebre tebre is offline
Miembro
 
Registrado: nov 2008
Posts: 93
Poder: 16
tebre Va por buen camino
hola amigos gracias a todos por sus respuestas. me sirvieron de mucho gracias
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
Edit sin fondo. rauros Varios 7 11-03-2008 15:49:57
Cambiar el color de fondo de un Edit o DBEdit FGarcia Varios 7 15-05-2007 20:20:19
Cambiar color de fondo en un DBgrid Alexis De la Cr Conexión con bases de datos 5 02-06-2006 22:25:59
Cambiar forma del fondo zugazua2001 Varios 2 11-08-2005 14:52:29
Cambiar el color de fondo de un TTextBrowser ruina Lazarus, FreePascal, Kylix, etc. 4 26-06-2004 15:52:13


La franja horaria es GMT +2. Ahora son las 08:23:03.


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