Fórum FOCUS??? #374463
01/09/2009
0
boa tarde.
Lá vai outra duvida...
Como funciona o foco de um campo?
Por exemplo:
Um cadastro de nomes: SOmente um campo...
Informo o nome, enquanto não pressionar TAB, a minha função envia msg de campo vazio....
Como se já foi digitado?
Lenasi
Curtir tópico
+ 0Posts
02/09/2009
.lg.
No evento OnExit do componente
[TEdit como Exemplo]
procedure TForm1.Edit1Exit(Sender: TObject); begin if (TEdit(Sender).Text = EmptyStr) then ShowMessage(´Campo não pode ser nulo ou vazio´); end;
.LG.
Gostei + 0
02/09/2009
Lenasi
procedure TForm1.Edit1Exit(Sender: TObject); begin if (TEdit(Sender).Text = EmptyStr) then ShowMessage(´Campo não pode ser nulo ou vazio´); end;
BOM DIA AMIGO.
DESCULPE, MAS EXPLIQUEI ERRADO.
É O SEGUINTE:
APÓS DIGITADO A INFORMAÇÃO E TENTAR GRAVAR SEM SAIR DO CAMPO, A MINHA FUNÇÃO É CHAMADA AVISANDO SOBRE O CAMPO VAZIO... SÓ FUNCIONA SE PRESSIONAR TAB(ISSO É SAINDO DO CAMPO)...
Gostei + 0
02/09/2009
.lg.
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_TAB) then begin Key := #0; Perform(WM_NEXTDLGCTL,0,0); end; end;
.LG.
Gostei + 0
02/09/2009
Lenasi
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_TAB) then begin Key := #0; Perform(WM_NEXTDLGCTL,0,0); end; end;
NÃO AMIGO...
O TAB ESTÁ FUNCIONANDO, O QUE EU QUERO DIZER É QUE,
SEM PRESSIONAR O TAB OU ENTER PARA SAIR DO CAMPO, AO TENTAR GRAVAR, DEVIDO A MINHA FUNCÃO O CAMPO CONTINUA VAZIO, MESMO JÁ TER DIGITADO ALGUMA COISA, ENTENDEU? A FUNÇÃO ESTÁ CORRETA, VERIFICA SE O CAMPO É NULL OU VAZIO, MAS O PROBLEMA É QUE, FOI DIGITADO ALGUMA COISA...
Gostei + 0
02/09/2009
.lg.
Ajudaria a entender.
.LG.
Gostei + 0
02/09/2009
Facc
O botão para gravar é um SpeedButton? Lembrando que os SpeedButtons não recebem foco, por isso ainda fica ´preso´ o edit.
Gostei + 0
02/09/2009
Lenasi
ACHO QUE NÃO ESTOU EXPLICANDO BEM...
OS CAMPOS SÃO DBEDIT..
NÃO TEM NADA A VER COM O BOTÃO...
É SIMPLES...
SÓ ESTOU QUERENDO DIZER QUE A VALIDAÇÃO DO CAMPO (SE VAZIO OU NÃO) ESTÁ SENDO VALIDADA MESMO QUE EU TENHA DIGITADO ALGO NESTE CAMPO...
VMS DETALHADAMENTE:
CADASTRO: BOTÃO INCLUIR, ABRE-SE OS CAMPOS PARA DIGITAÇÃO, OK?
INFORMEI NO CAMPO NOME, É CLARO, UM NOME QUALQUER.OK?
AGORA QUERO GRAVAR, BLZ, CLICO NO BOTÃO GRAVAR, OK?
AGORA QUE PEGA:
DIGITEI A INFORMAÇÃO, NÃO DEI ENTER E NEM TAB
(ESTOU DANDO COMO EXEMPLO UM CADASTRO DE APENAS UM CAMPO ´NOME´), FUI DIRETO AO BOTÃO GRAVAR...
A FUNÇÃO ENTENDE QUE O CAMPO ESTÁ VAZIO.. É ISTO !!!
AGORA APÓS DIGITADO, PRESSIONE TAB, PARA SAIR DESTE CAMPO (TIRANDO O FOCO DO MESMO), CONSIGO GRAVAR....
Gostei + 0
02/09/2009
Facc
Como vc está fazendo essa validação? Está comparando o DBEdit ou o Campo??
Gostei + 0
02/09/2009
.lg.
Ao sair ele atribui o valor ao campo do DataSet.
Porem você pode pegar o valor digitado usando a propriedade [b:d9885d3cbc]Text[/b:d9885d3cbc].
DBEdit.Text
Espero que isso ajude. rsrs, Agora é isto.
:lol:
.LG.
Gostei + 0
02/09/2009
Osocram
Gostei + 0
02/09/2009
Lenasi
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...
Gostei + 0
02/09/2009
Osocram
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...[/quote:cf49c8723c]
Gostei + 0
02/09/2009
Facc
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...[/quote:c91967447a]
isso mesmo, esses componentes (DBEdits, entre outros) só efetivam após vc sair do campo. Para isso no momento que vc está gravando compare o que foi digitado no DBEdit
if Trim(DbEdit.Text) = ´´ then Mensagem de Erro;
Gostei + 0
02/09/2009
Facc
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...[/quote:de2b7c0171]
isso mesmo, esses componentes (DBEdits, entre outros) só efetivam após vc sair do campo. Para isso no momento que vc está gravando compare o que foi digitado no DBEdit
if Trim(DbEdit.Text) = ´´ then Mensagem de Erro;
Gostei + 0
02/09/2009
Osocram
Assim sempre vai tirar o foco de onde estiver antes de salvar.
Ja tive esse problema qdo o usuario editar um DBEdit e tenta salvar usando um atalhoa Alt+S, pois o foco ainda não saiu do DBEdit e não pegava o valor correto.
Com um simples SetFocus resolvi o problema.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)