SetFocus Está Dando Trabalho

Delphi

11/07/2013

Pessoal, boa noite!!!

Abaixo o codigo de validação de data, até ai tudo bem, está validando tudo certinho, só que no form desse cadastro, possui, os botões, Incluir,Gravar,Alterar,Cancelar,Excluir.Quando eu clico no botão Incluir, ele abre os edit para digitação, mas se eu clicar no botão Cancelar ele não cancela, fica validando a data em branco, trazendo a mensagem do Mess(Frm_Cad_Funcionarios.Handle,''Verifique...'',mb_iconinformation or mb_ok);.Se eu tirar o Msk_Data_Admissao.SetFocus;Ele cancela normal.Mais eu preciso que o foco demostre que está em branco mais se eu clicar no botão cancelar, funcione como tem que funcionar.Alguem ajudaaaaaaaaaaa????


procedure TFrm_Cad_Funcionarios.Msk_Data_AdmissaoExit(Sender: TObject);
VAR data : TDate;
begin
try
data := StrToDate(Msk_Data_Admissao.Text);
except
begin
Mess(Frm_Cad_Funcionarios.Handle,''Verifique...'',mb_iconinformation or mb_ok);
Msk_Data_Admissao.SelectAll;
Msk_Data_Admissao.SetFocus;
Abort;
end;
end;
Bruno Henrique

Bruno Henrique

Curtidas 0

Respostas

Marco Salles

Marco Salles

11/07/2013

POE ...

antes de cair no try teste se o foco esta indo para o Botão cancelar ... se sim , sai

[]sds
GOSTEI 0
Bruno Henrique

Bruno Henrique

11/07/2013

Não Deu Certo!!!Já to pirando.Se eu deixar o campo em branco, ele exibe a mensagem de Verifique e retorna o foco para o campo, agora se eu digitar uma data errada exemplo 10/15/2013 ele não exibe a mensagem,ele foca no campo, mais eu clico no cancelar ai ele cancela.....Ajudaa!!!
GOSTEI 0
Marco Salles

Marco Salles

11/07/2013

Mas quando clica no cancelar não [e para ele cancelar mesmo ?????????
GOSTEI 0
Bruno Henrique

Bruno Henrique

11/07/2013

Sim, é pra cancelar, quando eu clico em cancelar é pra cancelar a inclusão.Ele teria que deixar como false todos os edits e ativar os botões incluir, pesquisar, e alterar como true.Mas quando eu clico no botão cancelar, ele intende que o campo data é invalido por estar em branco fica me dando a mensagem do Mess(Frm_Cad_Funcionarios.Handle,'Verifique...',mb_iconinformation or mb_ok);


Esse é o meu botão cancelar

procedure TFrm_Cad_Funcionarios.LimpaCampos;
var i:Integer;
Begin
For i:=0 To (ComponentCount - 1) Do
If Components[i] Is TCustomEdit Then (Components[i] As TCustomEdit).Clear;
Ads_Cad_Funcionarios.Close;
Edt_Comissao.Text:=' 0,00';
f_operacao:='I';
Ads_Cad_Funcionarios.Close;
Ads_Cad_Funcionarios.CommandText:='Select * from Cad_Funcionarios order by nome';
Ads_Cad_Funcionarios.Open;
end;
GOSTEI 0
Marco Salles

Marco Salles

11/07/2013

então amigo , reveja o que eu lhe disse no início e vc disse que não deu certo


POE ...

antes de cair no try teste se o foco esta indo para o Botão cancelar ... se sim , sai

[]sds


como vc fez este teste ???

onde vc fez este teste ???

qual a instrução que vc utilizou para implementar este teste ???


[]sds
GOSTEI 0
Bruno Henrique

Bruno Henrique

11/07/2013

Amigão

Depois do begin eu coloquei Btn_Cancelar.SetFocus;

procedure TFrm_Cad_Funcionarios.Msk_Data_AdmissaoExit(Sender: TObject);
VAR data : TDate;
begin
Btn_Cancelar.SetFocus;
try
data := StrToDate(Msk_Data_Admissao.Text);
except
begin
Mess(Frm_Cad_Funcionarios.Handle,'Verifique...',mb_iconinformation or mb_ok);
//MessageDLG('Verifique!!!',mtInformation,[mbok],1);
Msk_Data_Admissao.SelectAll;
Msk_Data_Admissao.SetFocus;
Abort;

end;
end;
GOSTEI 0
Marco Salles

Marco Salles

11/07/2013

não

procedure TFrm_Cad_Funcionarios.Msk_Data_AdmissaoExit(Sender: TObject);
VAR data : TDate;
begin
if Btn_Cancelar.focused then
 exit;

//faça o que vc tem que fazer se não for cancelar
end;
GOSTEI 0
Bruno Henrique

Bruno Henrique

11/07/2013

Amigãooo deu certoo!!!Obrigado!!!
Abraçãoaooo

RESOLVIDO
GOSTEI 0
José

José

11/07/2013

Obrigado Bruno por seu retorno. Já que o problema foi solucionada estou dando este tópico por concluído.
GOSTEI 0
POSTAR