Fórum Mudar o foco do campo ao gravar um registro? #510408
12/02/2015
0
Tenho um formulário genérico com uma função para saltar de campo nos TDBEdit, para cada salto eu altero a cor do campo de acordo com o foco, o problema é que se eu altera o conteúdo do campo TDBEdit, mais não sair dele, a alteração não é gravada, já fiz vários testes, já jóquei o foco em outro campo no momento da gravação é nada deu certo.
Agradeço a ajuda
procedure TfrmGenerico.SaltaCampo(Sender: TObject; var Key: Char);
begin
//comando para saltar campos com o enter
if Key = chr(13) then
begin
Key := #0;
Perform(wm_NextDlgCtl,0,0);
end;
end;
{aplica a cor no componente}
procedure TfrmGenerico.AplicaCor(Sender: TObject);
begin
TDBEdit(Sender).Color := clGradientInactiveCaption;
TDBEdit(Sender).Font.Style := [fsBold];
TDBLookupComboBox(Sender).Color := clGradientInactiveCaption;
TDBComboBox(Sender).Color := clGradientInactiveCaption;
TDBRadioGroup(Sender).Font.Style := [fsBold];
TDBCheckBox(Sender).Font.Style := [fsBold];
end;
{retira a cor no componente}
procedure TfrmGenerico.TiraCor(Sender: TObject);
begin
TDBEdit(Sender).Color := clWindow;
TDBEdit(Sender).Font.Style := [];
TDBLookupComboBox(Sender).Color := clWindow;
TDBComboBox(Sender).Color := clWindow;
TDBRadioGroup(Sender).Font.Style := [];
TDBCheckBox(Sender).Font.Style := [];
end;
Itamar Souza
Curtir tópico
+ 0Posts
12/02/2015
Douglas
Qualquer dúvida estou à disposição!
Gostei + 0
12/02/2015
Itamar Souza
Agradeço a ajuda, fiz o debugue, no onShow estou usando a função para trocar a cor dos componentes , mais até o momento eu não descobri o porque que só grava quando
eu saio do campo.
{troca a cor dos componentes na tela de acordo com a seleção}
procedure TfrmGenerico.FormShow(Sender: TObject);
var
I : Integer;
begin
for I := 0 to ComponentCount - 1 do
//tratando dtbedit
if Components[I]is TDBEdit then
begin
TDBEdit(Components[I]).OnEnter := AplicaCor;
TDBEdit(Components[I]).OnExit := TiraCor;
end
else
// tratando TDBLookupComboBox
if Components[I]is TDBLookupComboBox then
begin
TDBLookupComboBox(Components[I]).OnEnter := AplicaCor;
TDBLookupComboBox(Components[I]).OnExit := TiraCor;
end
else
// tratando TDBComboBox
if Components[I]is TDBComboBox then
begin
TDBComboBox(Components[I]).OnEnter := AplicaCor;
TDBComboBox(Components[I]).OnExit := TiraCor;
end
else
// tratando TDBRadioGroup
if Components[I]is TDBRadioGroup then
begin
TDBRadioGroup(Components[I]).OnEnter := AplicaCor;
TDBRadioGroup(Components[I]).OnExit := TiraCor;
end
else
// tratando TDBCheckBox
if Components[I]is TDBCheckBox then
begin
TDBCheckBox(Components[I]).OnEnter := AplicaCor;
TDBCheckBox(Components[I]).OnExit := TiraCor;
end;
end;
Gostei + 0
12/02/2015
Itamar Souza
usando o ActiveControl := nil; antes de gravar o registro resolveu.
agradeço
Gostei + 0
12/02/2015
Eduardo Saute
Gostei + 0
12/02/2015
Eduardo Saute
Gostei + 0
12/02/2015
Douglas
usando o ActiveControl := nil; antes de gravar o registro resolveu.
agradeço
Show Itamar, é sempre bom debugar, pois assim você consegue entender o que está acontecendo no código. Precisando de algo é só falar!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)