Escrever no proximo controle
Olá a todos.
Tenho num Form dois Edit´s
um para informar um codigo e outro seria para escrever uma descricão do codigo, tipo codigo do cliente e escrever na frente o nome do cliente.
No evento OnKeyDown do Formulario Padrao eu testo
se foi pressionado Enter conforme abaixo:
procedure [color=red:974e6e402c]TFrRelPadrao.DbEdit1KeyDown[/color:974e6e402c](Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then // enter
begin
if trim( TEdit(Sender).Text ) = ´´ then
begin
[color=blue:974e6e402c]TEdit(Sender).Text := ´T U D O´; >>> AQUI[/color:974e6e402c]
end;
end;
end;
Caso seja pressionado Enter e o Edit esteja vazio
preciso escrever alguma coisa no proximo edit que é o edit da
descricao.
Da maneira abaixo eu escrevo no Edit posicionado
[color=red:974e6e402c]TEdit(Sender).Text := ´T U D O´[/color:974e6e402c]
preciso escrever no proximo Edit como fazer isso??
Obrigado
Neto
Tenho num Form dois Edit´s
um para informar um codigo e outro seria para escrever uma descricão do codigo, tipo codigo do cliente e escrever na frente o nome do cliente.
No evento OnKeyDown do Formulario Padrao eu testo
se foi pressionado Enter conforme abaixo:
procedure [color=red:974e6e402c]TFrRelPadrao.DbEdit1KeyDown[/color:974e6e402c](Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then // enter
begin
if trim( TEdit(Sender).Text ) = ´´ then
begin
[color=blue:974e6e402c]TEdit(Sender).Text := ´T U D O´; >>> AQUI[/color:974e6e402c]
end;
end;
end;
Caso seja pressionado Enter e o Edit esteja vazio
preciso escrever alguma coisa no proximo edit que é o edit da
descricao.
Da maneira abaixo eu escrevo no Edit posicionado
[color=red:974e6e402c]TEdit(Sender).Text := ´T U D O´[/color:974e6e402c]
preciso escrever no proximo Edit como fazer isso??
Obrigado
Neto
Acneto
Curtidas 0
Respostas
Vand3rson
23/07/2009
if key = 13 then // enter begin if trim( TEdit(Sender).Text ) = ´´ then begin if Sender = Edit1 then Edit2.Text := ´T U D O´; end; end;
GOSTEI 0
Osocram
23/07/2009
eu acho q nesse seu exemplo nunca vai funcionar....
pois vc esta testando o evento do TFrRelPadrao.DbEdit1KeyDown então ele só é disparado qdo precionar uma tecla no DBEdit1, então o sender sempre vai ser DBEdit1...
Não se vc tentou fazer algo generico aqui... mas para usar o outro edit aqui vc tem q chamar ele Edit2.text := algo
pois vc esta testando o evento do TFrRelPadrao.DbEdit1KeyDown então ele só é disparado qdo precionar uma tecla no DBEdit1, então o sender sempre vai ser DBEdit1...
if key = 13 then // enter begin if trim( TEdit(Sender).Text ) = ´´ then begin TEdit(Sender).Text := ´T U D O´; >>> AQUI end; end; end;
Não se vc tentou fazer algo generico aqui... mas para usar o outro edit aqui vc tem q chamar ele Edit2.text := algo
GOSTEI 0
Acneto
23/07/2009
Obrigado pela intensão em ajudar
Sim estou testando isso num Form Padrao, por isso não sei
o nome do proximo controle (edit) ´componente´
Penso que da mesma forma que conseguimos passar para o proximo edit
com a instrução [color=red:22b6e95a46]Perform(Wm_NextDlgCtl , 0 , 0 )[/color:22b6e95a46]
podemos também saber o proximo componente e enviar um texto
para ele
obrigado
Neto
Sim estou testando isso num Form Padrao, por isso não sei
o nome do proximo controle (edit) ´componente´
Penso que da mesma forma que conseguimos passar para o proximo edit
com a instrução [color=red:22b6e95a46]Perform(Wm_NextDlgCtl , 0 , 0 )[/color:22b6e95a46]
podemos também saber o proximo componente e enviar um texto
para ele
obrigado
Neto
GOSTEI 0
Acneto
23/07/2009
Obrigado pela intensão em ajudar
Sim estou testando isso num Form Padrao, por isso não sei
o nome do proximo controle (edit) ´componente´
:idea: Penso que da mesma forma que conseguimos passar para o proximo edit
com a instrução [color=red:385bf69cef]Perform(Wm_NextDlgCtl , 0 , 0 )[/color:385bf69cef]
podemos também saber o proximo componente e enviar um texto
para ele
obrigado
Neto
Sim estou testando isso num Form Padrao, por isso não sei
o nome do proximo controle (edit) ´componente´
:idea: Penso que da mesma forma que conseguimos passar para o proximo edit
com a instrução [color=red:385bf69cef]Perform(Wm_NextDlgCtl , 0 , 0 )[/color:385bf69cef]
podemos também saber o proximo componente e enviar um texto
para ele
obrigado
Neto
GOSTEI 0
Osocram
23/07/2009
ah tah...
Bom agora estamos nos entendendo melhor.
Mas é um pouco estranho isso que esta tentando fazer... mas vamos la.
vc pode fazer assim. Edit1 = Cod e Edit2 = Descrição
Primeiro vc tem que verificar quem é o sender
por exemplo
if TEdit(sender).name = ´Edit1´ then
Edit2.text := ´tudo´
Bom agora estamos nos entendendo melhor.
Mas é um pouco estranho isso que esta tentando fazer... mas vamos la.
vc pode fazer assim. Edit1 = Cod e Edit2 = Descrição
Primeiro vc tem que verificar quem é o sender
por exemplo
if TEdit(sender).name = ´Edit1´ then
Edit2.text := ´tudo´
GOSTEI 0
Acneto
23/07/2009
:) Devagar vamos nos entendedo Osocram
Não posso testar assim porque estou no form padrao e não sei o nome dos edit´s que estão no formulario.
Sei que se caio neste evento sempre tenho depois desse edit um outro edit para escrever uma descricao, por isso tem que ser generico
:roll: Estou no compontente (controle/Edit) e quero escrever alguma coisa no proximo componente que será um controle do tipo edit.
Vamos lá, a luta continua
Neto
Não posso testar assim porque estou no form padrao e não sei o nome dos edit´s que estão no formulario.
Sei que se caio neste evento sempre tenho depois desse edit um outro edit para escrever uma descricao, por isso tem que ser generico
:roll: Estou no compontente (controle/Edit) e quero escrever alguma coisa no proximo componente que será um controle do tipo edit.
Vamos lá, a luta continua
Neto
GOSTEI 0
Danielrsanches
23/07/2009
não entendi bem o que deseja, mas...
com esse código assima, vc modifica o texto do próximo edit ... é só adaptar o que deseja ...
abraços !!!
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin (form1.Components[(Sender as TEdit).ComponentIndex + 1] as TEdit).Text:= ´TUDO´; end;
com esse código assima, vc modifica o texto do próximo edit ... é só adaptar o que deseja ...
abraços !!!
GOSTEI 0
Osocram
23/07/2009
O problema é que se tiver algum outro controle entre esses componentes ja não funciona.
Uma abordagem que eu sugiro então é o seguinte:
Faz um componente herdade do TEdit do tipo TEditDesc e nele cria um campo Descricao:TEdit;
dae no seu evento
if sender is TEditDesc then begin
if assigned(TEditDesc(sender).Descricao) then
TEditDesc(sender).Descricao.text := ´TUDO´
end;
não entendi bem o que deseja, mas...
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin (form1.Components[(Sender as TEdit).ComponentIndex + 1] as TEdit).Text:= ´TUDO´; end;
Uma abordagem que eu sugiro então é o seguinte:
Faz um componente herdade do TEdit do tipo TEditDesc e nele cria um campo Descricao:TEdit;
dae no seu evento
if sender is TEditDesc then begin
if assigned(TEditDesc(sender).Descricao) then
TEditDesc(sender).Descricao.text := ´TUDO´
end;
GOSTEI 0
Emerson Nascimento
23/07/2009
você pode tentar assim:
[b:5ea7b7282f]mas oberve um detalhe: para que essa rotina funcione corretamente será necessário acertar o TabOrder dos componentes.[/b:5ea7b7282f]
procedure TFrRelPadrao.DbEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Controle: TWinControl; begin if trim(TEdit(Sender).Text) = ´´ then begin Controle := Self.FindNextControl(TWinControl(Sender), True, True, False); repeat if (Controle is TEdit) then begin TEdit(Controle).Text := ´TUDO´; break; end; Controle := Self.FindNextControl(Controle, True, True, False); until Controle = TWinControl(Sender); end; end;
[b:5ea7b7282f]mas oberve um detalhe: para que essa rotina funcione corretamente será necessário acertar o TabOrder dos componentes.[/b:5ea7b7282f]
GOSTEI 0
Acneto
23/07/2009
Quase lá Daniel
Este evento está num form Padrao e é disparado de diversos formularios
que o utilizam então não sabemos o nome do Form.
Testei com TForm(Sender) mas retorna vazio ´´
Vamos continuar a estudar
Obrigado
Neto
Este evento está num form Padrao e é disparado de diversos formularios
que o utilizam então não sabemos o nome do Form.
Testei com TForm(Sender) mas retorna vazio ´´
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin (form1.Components[(Sender as TEdit).ComponentIndex + 1] as TEdit).Text:= ´TUDO´; end;
Vamos continuar a estudar
Obrigado
Neto
GOSTEI 0
Acneto
23/07/2009
:lol: Ótimo Emerson
tá resolvido
Abraço
Neto
tá resolvido
Abraço
Neto
GOSTEI 0