DELPHI - Percorrer Edits alterando evento KeyDown
Bom dia!
Existe alguma possibilidade de percorrer todos os Edits de um formulário e alterar o evento OnKeyDown dos mesmos?
Obrigado desde já!
Existe alguma possibilidade de percorrer todos os Edits de um formulário e alterar o evento OnKeyDown dos mesmos?
Obrigado desde já!
Nomad
Curtidas 0
Melhor post
Emerson Nascimento
29/12/2020
você quer somente aqueles que estão diretamente no form ou todos aqueles contidos, mesmo que em contêineres internos?
se quer somente os que estão diretamente no form:
Se você quer tratar todos os edits, precisará de uma função recursiva:
se quer somente os que estão diretamente no form:
procedure TForm5.FormCreate(Sender: TObject); var i: integer; begin for i := 0 to TForm5.ControlCount-1 do if TForm5.Controls[i] is TEdit then TEdit(TForm5.Controls[i]).OnKeyPress := KeyPressGeral; end;
Se você quer tratar todos os edits, precisará de uma função recursiva:
procedure TForm5.FormCreate(Sender: TObject); // função recursiva para trocar a função do evento KeyPress procedure TrocaKeyPress(Container: TWinControl); var i: integer; begin for i := 0 to Container.ControlCount-1 do if Container.Controls[i] is TEdit then begin TEdit(Container.Controls[i]).Text := 'Teste'; TEdit(Container.Controls[i]).OnKeyPress := KeyPressGeral; end else if (Container.Controls[i] is TWinControl) then TrocaKeyPress(TWinControl(Container.Controls[i])); end; begin TrocaKeyPress(Self); end;
GOSTEI 1
Mais Respostas
Nomad
29/12/2020
UP!
GOSTEI 0
Emerson Nascimento
29/12/2020
desculpe, coloquei keypress.
basta trocar para keydown.
basta trocar para keydown.
GOSTEI 1
Nomad
29/12/2020
Boa tarde, Emerson!
Agradeço a sua ajuda... E no caso é somente nos que estão no Form mesmo. O KeyDown dos edits recebe o código "if Key = VK_Return then
SpeedButton1Click(self);".
Eu queria "limpar" isso ao passar pela condição, anular o keydown dos edits. Porém não estou sabendo qual parâmetro passar, tentei com o nil mas não dá certo.
Agradeço a sua ajuda... E no caso é somente nos que estão no Form mesmo. O KeyDown dos edits recebe o código "if Key = VK_Return then
SpeedButton1Click(self);".
Eu queria "limpar" isso ao passar pela condição, anular o keydown dos edits. Porém não estou sabendo qual parâmetro passar, tentei com o nil mas não dá certo.
GOSTEI 0
Emerson Nascimento
29/12/2020
não deu certo com nil? assim?
procedure TForm5.FormCreate(Sender: TObject); var i: integer; begin for i := 0 to TForm5.ControlCount-1 do if TForm5.Controls[i] is TEdit then TEdit(TForm5.Controls[i]).OnKeyPress := nil; end;
GOSTEI 1
Nomad
29/12/2020
Pior que não, achei que daria :(
GOSTEI 0
Nomad
29/12/2020
Boa tarde, Emerson!
Fiz algumas alterações aqui e a principio de tudo certo, fiz me baseando no que me passou. Agradeço muito a sua atenção e ajuda, continue assim!
Obrigado!!!
Fiz algumas alterações aqui e a principio de tudo certo, fiz me baseando no que me passou. Agradeço muito a sua atenção e ajuda, continue assim!
Obrigado!!!
GOSTEI 1