Fórum Problema com EditMask #258339
13/11/2004
0
Criei o DataField para trabalhar com o valor deste campo a nivel de projeto
No Objecto Inspector Desse campo , Na Propriedade [b:2b48629591]EditMask[/b:2b48629591] Selecionei a Mascara: [b:2b48629591]99/99/9999;0;_[/b:2b48629591]
Gostaria de assim que [b:2b48629591]abrir[/b:2b48629591] um novo registro o valor da [b:2b48629591]data atual [/b:2b48629591]fosse atribuida para este campo :wink:
Insiro valores atraves de[b:2b48629591] DbEdits [/b:2b48629591]e uso [b:2b48629591]DataSource[/b:2b48629591] e [b:2b48629591]Table[/b:2b48629591]
Então escrevi o Seguinte Código
procedure TFormCadastroFuncionarios.frabotoes1novoClick(Sender: TObject); begin Modulo.TBfun.Append; Modulo.TbfunData_Admissao.Value:=Date;//Aqui atribuo end;
o que esta acontecendo e que no DbEdit :cry: Inves de aparecer a data
Por exemplo [b:2b48629591]´13/11/2004´[/b:2b48629591] esta aparecendo a String
[b:2b48629591]´13//1/1/2004´[/b:2b48629591]
Como eu resolvo isto, [b:2b48629591]em outra palavras como eu posso colocar a data atual e usar a mascara ao mesmo tempo[/b:2b48629591] :lol: :lol:
end;
Valeu amigos
Marco Salles
Curtir tópico
+ 0Posts
13/11/2004
Marco Salles
Gostei + 0
14/11/2004
Marco Salles
Gostei + 0
14/11/2004
Ariovaldo
Coloquei um DBEdit no Form Normalmente
No Field da Table Coloquei a seguinte Mascara
Display Format = dd/mm/yyyy
EditMask = #//
Agora fiz uma função para validar data que é a seguinte
Begin
Result := False;
if (Text = ´ / / ´) or (Text = ´ / / ´) then
begin
Sender.Clear;
Result := True;
end
else
begin
try
Sender.AsString := Text;
Result := True;
except
messagedlg(´Data Inválida !!!´, mtInformation,[mbOk],0 );
if Screen.Cursor = crHourGlass then begin
Screen.Cursor := crDefault;
end;
end;
end;
End;
e no evento on settext do field Coloquei isso
if not ( CheckDate(Sender,Text) ) then begin
Abort;
end;
Essa função se fez necessária porque quando vc usa maskEdit uma vez que vc entrar no Field vc nãoconsegue sair com ele vazio
Gostei + 0
14/11/2004
Marco Salles
Voce nao disse aonde colocar o Método descrito :?: :?: :?:
Acredito que deva ser No Evento OnExit do DbEdit :!: :!: :!:
O Problema que nen sempre o Evento OnExit e Executado :cry: :cry:
Teclas de atalho, os botoes do tipo SpeedButton não recebem foco,
mesmo que clique com o mouse sobre um Speed-Button o foco continuará no DbEdit.. O que pode gerar um erro..
Se Digitarmos uma data invalida e dar Um Ctrl S (Tecla de atalho para Salvar, Por exemplo), o usuário receberá uma mensagem do compilador
Eu uso Delphi 5.0 e parece que esta função não existe.. O Porgrama nao compila. Da erro ´Undeclared Indetifier´
Mas vamos Chegar la :P :P :P
Gostei + 0
14/11/2004
Ariovaldo
if not ( Funcao.CheckDate(Sender,Text) ) then begin
Abort;
end;
no evento on set text do Field, nota bem que antes de chamar a funcao eu passei em qual unit ela esta correto.
Espero ter te ajudado
[b:c805f75341]unit Funcao;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, DB, Controls, Forms, Dialogs,
Mask, DBCtrls;
function CheckDate(Sender: TField; Text: String): Boolean;
implementation
function CheckDate(Sender: TField; Text: String): Boolean;
begin
Result := False;
if (Text = ´ / / ´) or (Text = ´ / / ´) then
begin
Sender.Clear;
Result := True;
end
else
begin
try
Sender.AsString := Text;
Result := True;
except
messagedlg(´Data Inválida !!!´, mtInformation,[mbOk],0 );
if Screen.Cursor = crHourGlass then begin
Screen.Cursor := crDefault;
end;
end;
end;
End;
End.[/b:c805f75341]
Gostei + 0
15/11/2004
Marco Salles
OK
Eu Tb Tenho :P :P
Ta ajudando e muito :P :P :P :P
De Fato , esta função permite que se sai do Field com um valor Vazio :P :P
Mas agora atente ao fato curioso. ao digitar uma data em um campo, o usuário tem algumas opçoes:
1)[b:e1b976758e]continuar[/b:e1b976758e] a digitação etre outros campos :arrow: A Função CheckDate
ira analisar a data Digitada. Ok :wink:
2)[b:e1b976758e]Salvar[/b:e1b976758e] a data digitada.. Clicando em um botao correspondende ou usando uma tecla de atalho :arrow: A Função CheckDate
ira analisar a data Digitada. Ok :wink:
3)[b:e1b976758e]Cancelar [/b:e1b976758e]a Data Digitada..Clicando em um botao correspondende ou
usando a tecla de atalho :arrow:A Função CheckDate
ira analisar a data Digitada. Ok :!: :!: :cry: :cry: Mas suponha que o usuário , tenha digitado uma data [b:e1b976758e]ERRADA[/b:e1b976758e]. E Neste Momento , ele queira [b:e1b976758e]cancelar[/b:e1b976758e] a operação... Ele gostaria simplismente de [b:e1b976758e]Retornar[/b:e1b976758e] ao estado Anterior dos Dados(Modo Browse)... Mas antes de qualquer coisa o evento [b:e1b976758e]OnSetText [/b:e1b976758e]e chama a função [b:e1b976758e]CheckDate [/b:e1b976758e]que ira retornar uma [b:e1b976758e]mensagem de erro [/b:e1b976758e]para o usuário :cry: :cry: :cry: Uma situação , um pouco [b:e1b976758e]desagradável[/b:e1b976758e]... Que acho que deveriamos contornar.[/b]
Na realidade eu estou tentando corrigir, que para mim, e uma imperfeição(Ta certo que pode passar por muito Tempo despercebido pelo usuário.)
[size=18:e1b976758e][b:e1b976758e]Em um outro tópico[/b:e1b976758e][/size:e1b976758e], tento lançar mao de uma idéia , que acho pode resolver esta questão.. Se voce quiser participar, ou se nao concorda que de fato isto seje uma ´imperfeição´, ou se tem outra visão, outra idéia,etc e quiser compartilhar , por favor, sinta--se a vontade :P :P
P:s neste tópico a [b:e1b976758e]sua[/b:e1b976758e] função [b:e1b976758e]CheckDate[/b:e1b976758e] e a [b:e1b976758e]minha ConfirmarData[/b:e1b976758e].
a unica diferenca e que datas vazias da ERRO ([b:e1b976758e]To concebendo o projeto asssim[/b:e1b976758e]),e que o método esta
todo descrito [b:e1b976758e]dentro [/b:e1b976758e]do evento[b:e1b976758e] OnSetText[/b:e1b976758e], ao inves de
Passar parametros para uma outra funçaõ de outra unit.
[b:e1b976758e]o Tópico e este:[/b:e1b976758e]
http://delphiforum.icft.com.br/forum/viewtopic.php?p=170907#170907
Gostei + 0
15/11/2004
Marco Salles
Gostei + 0
16/11/2004
Marco Salles
Gostei + 0
16/11/2004
Seccatto
Epero ter ajudado.
Falow
Gostei + 0
16/11/2004
E_gama
Utilize a máscara: [b:6a40f44bef]99/99/9999;1;_[/b:6a40f44bef]
Gostei + 0
16/11/2004
Marco Salles
Postei isto anteriormente
O Outro problema que surge e evitar uma mensagem de erro, quando o usuário querer puro e simplesmente Cancelar a operação...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)