Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcio.theis

Mudar cor de um TDBEdit pelo OnEnter e OnExit do componente

Recommended Posts

Para fazer a alteração da cor de entrada e saída em um DBEdit, se pode fazer:

 

Declare logo após o type do seu form:

 

TDBEdit = class(DBCtrls.TDBEdit)	procedure CMEnter(var Msg: TMessage); message CM_ENTER;	procedure CMExit(var Msg: TMessage); message CM_EXIT;  end;

E cria as duas procedures com o seguinte fonte:

 

procedure TDBEdit.CMEnter(var Msg: TMessage);beginColor:=cor_desejada;inheritedend;procedure TDBEdit.CMExit(var Msg: TMessage);beginColor:=cor_desejada;inheritedend;

Isto vai fazer com que quando entrar no DBEdit a cor mude para vermelho, e quando sair volte a cor padrão do windows...

É uma das formas de se fazer, sem precisar criar um novo componente...

Se quiser para TEdit ou demais componentes, basta criar para o mesmo seguindo a mesma forma...

 

Exemplo com três TDBEdit na tela:

 

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Mask, DBCtrls;type  TDBEdit = class(DBCtrls.TDBEdit)	procedure CMEnter(var Msg: TMessage); message CM_ENTER;	procedure CMExit(var Msg: TMessage); message CM_EXIT;  end;  TForm1 = class(TForm)	DBEdit1: TDBEdit;	DBEdit2: TDBEdit;	DBEdit3: TDBEdit;  private	{ Private declarations }	corEntrada: TColor;  public	{ Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}{ TDBEdit }procedure TDBEdit.CMEnter(var Msg: TMessage);begincorEntrada:=color;Color:=clRed;inheritedend;procedure TDBEdit.CMExit(var Msg: TMessage);beginColor:=corEntrada;inheritedend;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

marcio.,.... tenho uma duvida quanto a este codigo..tem como eu colocar isso dentro de uma unit de funções... e passar isso para algum lugar de modo que as dbedits de todo o sistema recebam este codigo?? sem que eu precise escrever em todos os forms??des de já agradeç0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo Machado Moreira, funciona sim... Você pode colocar dentro de uma unit função sua, e depois precisa somente declarar ela no Uses do form desejado, somente precisa cuidar que esta unit precisa ficar declarada depois da unit DBCtrls....

 

 

Exemplo de Unit contendo somente a função:

 

unit MudaCorEdit;interfaceuses  Messages, Graphics, Controls, DBCtrls;type  TDBEdit = class(DBCtrls.TDBEdit)	procedure CMEnter(var Msg: TMessage); message CM_ENTER;	procedure CMExit(var Msg: TMessage); message CM_EXIT;  private	corEntrada: TColor;  end;implementation{ TDBEdit }procedure TDBEdit.CMEnter(var Msg: TMessage);begincorEntrada:=color;Color:=clRed;inheritedend;procedure TDBEdit.CMExit(var Msg: TMessage);beginColor:=corEntrada;inheritedend;end.
Depois no form desejado declarei no uses depois da declaração de DBCtrls a minha unit criada e chamada de MudaCorEdit, ficando assim:

 

unit fPrincipal;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Mask, DBCtrls, MudaCorEdit, Buttons;type  TForm1 = class(TForm)	DBEdit1: TDBEdit;	DBEdit2: TDBEdit;	DBEdit3: TDBEdit;	DBEdit4: TDBEdit;	BitBtn1: TBitBtn;	procedure BitBtn1Click(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;var  Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);beginForm2:=TForm2.Create(Application);Form2.ShowModal;Form2.Free;end;end.
Criei ainda um segundo form e também adicionei a unit no uses e funcionou...

 

unit Unit2;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Mask, DBCtrls, MudaCorEdit;type  TForm2 = class(TForm)	DBEdit1: TDBEdit;	DBEdit2: TDBEdit;	DBEdit3: TDBEdit;	DBEdit4: TDBEdit;  private	{ Private declarations }  public	{ Public declarations }  end;var  Form2: TForm2;implementation{$R *.dfm}end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas a propriedade color mesmo

 

//Uses do Funcoes.pasuses   Windows, SQLExpr, DBXpress, Forms, Grids, Dialogs, IniFiles, MidasLib, StdCtrls, ExtCtrls, RpSystem, RpFiler,   RpDefine, RpBase, RpRender, RpRenderPDF, RpRenderHTML, RpRenderRTF, RpRenderText, Classes, Math, QExtCtrls,   Messages, ZipForge, Graphics, SimpleDS, DB, RpMemo, DBGrids, DateUtils, Buttons, Controls, Gauges, SysUtils,   ShellApi, Mask, ToolEdit, CurrEdit;type   TCheckBox = class(StdCtrls.TCheckBox)	  procedure CxEnter(var Msg: TMessage); message CM_ENTER;	  procedure CxExit (var Msg: TMessage); message CM_EXIT;end;type   TRadioGroup = class(ExtCtrls.TRadioGroup)	  procedure RdEnter(var Msg: TMessage); message CM_ENTER;	  procedure RdExit(var Msg: TMessage);  message CM_EXIT;end;procedure TCheckBox.CxEnter(var Msg: TMessage);begin   Color := clInfoBk;   inherited;end;procedure TCheckBox.CxExit(var Msg: TMessage);begin   Color := clBtnFace;   inherited;end;procedure TRadioGroup.RdEnter(var Msg: TMessage);begin   Color := clInfoBk;   inherited;end;procedure TRadioGroup.RdExit(var Msg: TMessage);begin   Color := clBtnFace;   inherited;end;

 

no .Pas do Formulário que quero alterar

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Padrao, Gauges, StdCtrls, Buttons, ExtCtrls, ZipForge, ShellAPI, IniFiles,  Mask, ToolEdit, CurrEdit, Funcoes;

 

mais ou menos isso

Agradeço a atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, fiz um teste aqui e funcionou para todos...

 

Segue a unit de função:

 

unit MudaCorEdit;interfaceuses  Messages, Graphics, Controls, DBCtrls, StdCtrls, ExtCtrls;type  TDBEdit = class(DBCtrls.TDBEdit)	procedure CMEnter(var Msg: TMessage); message CM_ENTER;	procedure CMExit(var Msg: TMessage); message CM_EXIT;  private	corEntrada: TColor;  end;type   TCheckBox = class(StdCtrls.TCheckBox)	  procedure CxEnter(var Msg: TMessage); message CM_ENTER;	  procedure CxExit (var Msg: TMessage); message CM_EXIT;end;type   TRadioGroup = class(ExtCtrls.TRadioGroup)	  procedure RdEnter(var Msg: TMessage); message CM_ENTER;	  procedure RdExit(var Msg: TMessage);  message CM_EXIT;  end;implementation{ TDBEdit }procedure TDBEdit.CMEnter(var Msg: TMessage);begincorEntrada:=color;Color:=clRed;inheritedend;procedure TDBEdit.CMExit(var Msg: TMessage);beginColor:=corEntrada;inheritedend;{ TCheckBox }procedure TCheckBox.CxEnter(var Msg: TMessage);begin   Color := clInfoBk;   inherited;end;procedure TCheckBox.CxExit(var Msg: TMessage);begin   Color := clBtnFace;   inherited;end;{ TRadioGroup }procedure TRadioGroup.RdEnter(var Msg: TMessage);begin   Color := clInfoBk;   inherited;end;procedure TRadioGroup.RdExit(var Msg: TMessage);begin   Color := clBtnFace;   inherited;end;end.

 

Segue a Unit do teste:

 

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Mask, DBCtrls, ExtCtrls, MudaCorEdit, Buttons;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.