Fórum edit - travar #241559

05/07/2004

0

Olá pessoal,

Tenho um campo edit que não pode ser alterado durante a digitação, ou seja se errar o usuário terá que digitar , digo, jjjj. Não estou conseguindo travar as teclas delete, shift+delete, e seta de retorno. Alguem pode me auxiliar ???

Mariah


Mariah

Mariah

Responder

Posts

05/07/2004

Nildo

Porque não usa a propriedade ENABLED?


Responder

Gostei + 0

05/07/2004

Mariah

Porque não usa a propriedade ENABLED?


Porque o usuário pode escrever neste campo, mas sempre complementando nunca alterando algo que já foi escrito. Ex:
Jose diz que sente dores fortes no pe direito, digo, no pe esquerdo.
Não posso permitir que retorne com backspace, nem seta e não use o delete.


Responder

Gostei + 0

05/07/2004

Nildo

Ahh entendi!
Olha, eu vou te ensinar uma coisa que eu costumo fazer nesses casos de descobrir as teclas.

Lá no Edit, no evento OnKeyDown você coloca assim:

ShowMessage( IntToStr( Key ) );


Dae você executa seu programa, clica no Edit e aperta a tecla BAckspace e anota o número que vai aparecer. Faça isso com as teclas DELETE e SETAs. Agora volta na programação, e coloque isso no evento OnKeyDown:

if Key in [ num_da_1_tecla, num_da_2_tecla, num_da_3_tecla ] then
   Key := 0;


Isto é, quando o usuário apertar alguma das teclas que você definiu no IF, não vai acontecer nada, a tecla será cancelada.


Responder

Gostei + 0

05/07/2004

Sapienza

Não sei exatamente a finalidade e a dimensão disso, mas vou dar algumas idéias para auxiliar.

Ao invés de pensar em travar as teclas, pense em utilizar no evento da Edit OnChange uma rotina capaz de verificar se o conteúdo da Edit é complementar ao original, vc pode pensar das segunte forma:

1- Quando o form for aberto, ou quando a tabela fou lida, vc guarda numa variável o conteúdo que não pode ser alterado (vou chamar de cont_original), quando a edit for alterada vc faz a comparação, se estiver errado, vc ´conserta´, teste esse código:

...
var
cont_original: string;
...
procedure TForm1.Form1OnShow(Sender: TObject);
begin
cont_original:=Edit1.Text;

cont_original:=Table1.FieldByName(´Nome_do_Campo´).AsString;
end;
...
procedure TForm1.Edit1OnChange(Sender: TObject);
S
var
S: String;
begin
S:=Copy(Edit1.Text,0,Length(cont_original));
IF S<>cont_original then
IF Length(Edit1.Text)>Length(S) then
Edit1.Text:=cont_original+Copy(Edit1.Text,Length(cont_original)
else
Edit1.Text:=cont_original;
+1,Length(Edit1.Text));
end;
...
end.

Desta forma vc irá ´prender´ a Edit, sempre o conteúdo da Edit1 terá o valor da variável cont_original. Não testei o código, mas acho que deve funcionar.

Abraços...


Responder

Gostei + 0

05/07/2004

Celo.steffen

No evento OnKey do Edit você pode Testar a tecla usada e atribuir outra tecla para o que foi feito:

If (Key = Vk_Delete) Or (Vk_Ereof) Then
Key := Vk_End;

Não testei este código, mas se tiver algum problema dá um toque.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar