FOCUS???
Amigos,
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?
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
Curtidas 0
Respostas
.lg.
01/09/2009
Pelo que eu entendi...
No evento OnExit do componente
[TEdit como Exemplo]
É isso sua dúvida!?
.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
Lenasi
01/09/2009
Pelo que eu entendi...
No evento OnExit do componente
[TEdit como Exemplo]
É isso sua dúvida!?
.LG.
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
.lg.
01/09/2009
pois bem...
Isso irá pular para o próximo componente na ordem do [b:f9fe29b71b]TabStop[/b:f9fe29b71b] ao precionar a tecla Tab. Tambem com o TEdit como Exemplo. Desta vez é isso ? rs
.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
Lenasi
01/09/2009
pois bem...
Isso irá pular para o próximo componente na ordem do [b:6c39e2488f]TabStop[/b:6c39e2488f] ao precionar a tecla Tab. Tambem com o TEdit como Exemplo. Desta vez é isso ? rs
.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;
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
.lg.
01/09/2009
Poderia ver o seu código!?
Ajudaria a entender.
.LG.
Ajudaria a entender.
.LG.
GOSTEI 0
Facc
01/09/2009
Como vc tá fazendo para jogar os dados do Edit no banco?
O botão para gravar é um SpeedButton? Lembrando que os SpeedButtons não recebem foco, por isso ainda fica ´preso´ o edit.
O botão para gravar é um SpeedButton? Lembrando que os SpeedButtons não recebem foco, por isso ainda fica ´preso´ o edit.
GOSTEI 0
Lenasi
01/09/2009
AMIGOS,
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....
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
Facc
01/09/2009
Amigo não precisa gritar.
Como vc está fazendo essa validação? Está comparando o DBEdit ou o Campo??
Como vc está fazendo essa validação? Está comparando o DBEdit ou o Campo??
AMIGOS,
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
.lg.
01/09/2009
Olha se o campo do DBEdit a gravação é direta... pra que vc quer regrava-lo!? Ele já o faz quando vc sai do campo.
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].
Este tem a informação digitada, porem no Campo do DataSet ainda não tera a informação enquanto vc não sair do campo.
Espero que isso ajude. rsrs, Agora é isto.
:lol:
.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
Osocram
01/09/2009
Enqto vc não sair do DBEdit ele não atualiza oq vc modificou no dataSet.
GOSTEI 0
Lenasi
01/09/2009
Enqto vc não sair do DBEdit ele não atualiza oq vc modificou no dataSet.
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...
GOSTEI 0
Osocram
01/09/2009
Pode tentar validar no OnChange mas cuida p não usar rotinas pesadas neste evento, pois pode deixar o sistema lento.
Então não tem jeito, enquanto não sair do campo (com TAB ou ENTER) vai sempre estar vazio?
Obrigado...[/quote:cf49c8723c]
[quote:cf49c8723c=´osocram´]Enqto vc não sair do DBEdit ele não atualiza oq vc modificou no dataSet.
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
Facc
01/09/2009
[quote:c91967447a=´osocram´]Enqto vc não sair do DBEdit ele não atualiza oq vc modificou no dataSet.
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
Facc
01/09/2009
[quote:de2b7c0171=´osocram´]Enqto vc não sair do DBEdit ele não atualiza oq vc modificou no dataSet.
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
Osocram
01/09/2009
Uma maneira de resolver isso é
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.
so fazer um SetFocus no botão salvar
.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
Emerson Nascimento
01/09/2009
antes de efetuar a gravação, tente um DataSet.UpdateRecord.
algo como:
algo como:
procedure TformX.BotaoGravarClick(Sender: TObject); begin SeuDataSet.UpdateRecord; TClientDataset(SeuDataSet).ApplyUpdates(0); // no caso de ser um CDS end;
GOSTEI 0