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