TEXT DATA
Pessoal ....
como formatar num textbox
assim [Ô] / / [Ô] ai a pessoa digita .... e o mesmo vai se preeenchendo
queria colocar a mascara ? tem como colocar isso nas propriedades do textbox ?? qual propriedade ??
e para gravare limpar
mudara algo ??
Abs
Marcelo Fazan
como formatar num textbox
assim [Ô] / / [Ô] ai a pessoa digita .... e o mesmo vai se preeenchendo
queria colocar a mascara ? tem como colocar isso nas propriedades do textbox ?? qual propriedade ??
e para gravare limpar
mudara algo ??
Abs
Marcelo Fazan
O Textbox não formata. Exite um objeto chamado MASKEDIT (componente MICROSOFT MASK EDIT CONTROL).
Para sem as barras de data? é melhor o campo ser DATE pois o controle sobre datas é mais preciso.
Para sem as barras de data? é melhor o campo ser DATE pois o controle sobre datas é mais preciso.
Tenta assim
Private Sub Text1_Change()
If Len(Text1) = 2 Then
Text1 = Text1 & [Ô]/[Ô]
Text1.SelStart = 4
End If
If Len(Text1) = 5 Then
Text1 = Text1 & [Ô]/[Ô]
Text1.SelStart = 7
End If
onde text1 é o nome do textbox
Private Sub Text1_Change()
If Len(Text1) = 2 Then
Text1 = Text1 & [Ô]/[Ô]
Text1.SelStart = 4
End If
If Len(Text1) = 5 Then
Text1 = Text1 & [Ô]/[Ô]
Text1.SelStart = 7
End If
onde text1 é o nome do textbox
Também pode ser feito desta forma:
Private Sub Text1_LostFocus()
Text1.Text = Left(Text1.Text, 2) & [Ô]/[Ô] & Mid(Text1.Text, 3, 2) & [Ô]/[Ô] & Right(Text1.Text, 2)
Text1.Text = Format(Text1.Text, [Ô]DD/MM/YY[Ô])
End Sub
Quando digitado 200210 fica formatado 20/02/10 e se mudar o format para [Ô]DD/MM/YYYY[Ô] fica 20/02/2010
. . .
Bom vou deixar uma dica tambem, apesar de a dica do maskeditbox funcionar não sou muito fã do mesmo.
veja
[ô] depois de muitas dicas que estudei cheguei a esta conclusão
[ô] o código a seguir além de formatar corretamente a data ele
[ô] ainda permite que você digite apenas NUMEROS, e deixa a
[ô] tecla Backspace funcionando normalmente
[ô] Primeiro coloque em um módulo o seguinte código:
[ô] Para chamar afunção basta você colocar o seguinte código
[ô] no evento KeyPress do seu campo como mostrado abaixo:
veja
[ô] depois de muitas dicas que estudei cheguei a esta conclusão
[ô] o código a seguir além de formatar corretamente a data ele
[ô] ainda permite que você digite apenas NUMEROS, e deixa a
[ô] tecla Backspace funcionando normalmente
[ô] Primeiro coloque em um módulo o seguinte código:
Function CampoDATA(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 5 Then
obj.Text = obj.Text + [Ô]/[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
[ô] Para chamar afunção basta você colocar o seguinte código
[ô] no evento KeyPress do seu campo como mostrado abaixo:
Private Sub txtData_KeyPress(KeyAscii As Integer)
[ô]
CampoDATA txtData, KeyAscii
[ô]
End Sub
Tenho que concordar com o MARCELO-TREZE (por mais que me doa o coração): O maskedit é um saco.
Tente a formatação por código como foi indicado.
Tente a formatação por código como foi indicado.
olá pessoal obrigado as respostas
testei o do ADhel - é bem interessante pois coloca apos o foco
o do microsheme - aqui deu a primeira barra
percebi que digitando 20 + / + 01 = 20/01 o acess grava 20/01/2010
tambem ficaria bom
o do treze ai fico mais ajustavel com a realidade conforme digita vai aparecendo as 2 [Ô] / [Ô]
porem estava pensando que seria melhor ainda o do Edermir
pq acho que o dele conforme inicia o form os / / ja aparece no campo
andei puxando uns exemplos, e vi um lance que parecia um componente de mascara
porem iria dar o retorno significativo a qual estou acostumado a projetar
carregando a barra mesmo antes e durante o tempo de execucao .
teria como carregar o formulario com / / ?
inves de em branco
esses exemplos tem como eu inicializar no formulario
Abs
Marcelo Fazan
testei o do ADhel - é bem interessante pois coloca apos o foco
o do microsheme - aqui deu a primeira barra
percebi que digitando 20 + / + 01 = 20/01 o acess grava 20/01/2010
tambem ficaria bom
o do treze ai fico mais ajustavel com a realidade conforme digita vai aparecendo as 2 [Ô] / [Ô]
porem estava pensando que seria melhor ainda o do Edermir
pq acho que o dele conforme inicia o form os / / ja aparece no campo
andei puxando uns exemplos, e vi um lance que parecia um componente de mascara
porem iria dar o retorno significativo a qual estou acostumado a projetar
carregando a barra mesmo antes e durante o tempo de execucao .
teria como carregar o formulario com / / ?
inves de em branco
esses exemplos tem como eu inicializar no formulario
Abs
Marcelo Fazan
Cara.
A minha formatação fecha a data com as duas barras; a não ser que teu textbox tenha tamanho menor que a formatação
da data, tipo maxlenght menor que 10.
Agora, se tu quer a formatação com barras já no carregamento do form, vai ter que usar o MaskEditBox e deixar
a propriedade Mask = ##/##/## para dd/mm/aa ou ##/##/#### para dd/mm/aaaa
assim vai aparecer já no carregamento do form __/__/__ ou __/__/____ respectivamente.
blz . . .
olá amigo, capaz que nao testei corretamente ,
mais entao quer dizer , que MaskEditBox
vou ter que usar (componente MICROSOFT MASK EDIT CONTROL).
???
para carregar na inicializacao ##/##/#### ?
ABs
Marcelo Fazan
mais entao quer dizer , que MaskEditBox
vou ter que usar (componente MICROSOFT MASK EDIT CONTROL).
???
para carregar na inicializacao ##/##/#### ?
ABs
Marcelo Fazan
Olha a função que eu mesmo desenvolvi
dentro de um modulo cv coloca
Function MaskData(Text1 As TextBox, codigoasc As Integer)
Text1.MaxLength = 10
[ô]quando o usuário apagar ele sai da função
If codigoasc = 8 Or codigoasc = 22 Then
Exit Function
Else
If Chr(codigoasc) < 0 Or Chr(codigoasc) > 9 Then
[ô]aqui aceita o usuário digitar barra dentro da posicao correta
If Text1.SelStart = 2 Or Text1.SelStart = 5 Then
If codigoasc = 47 Then
Exit Function
End If
Else
[ô]aqui ele não pode digitar a barra fora da posição
If codigoasc = 47 Then
codigoasc = 0
Exit Function
End If
End If
codigoasc = 0
Exit Function
End If
End If
[ô]coloca barra da data automaticamente quando chega na posicao correta
If Text1.SelStart = 2 Or Text1.SelStart = 5 Then
Text1.SelText = Text1.SelText + [Ô]/[Ô]
End If
End Function
e ta proriedade do text box vc faz assim
Private Sub txtdtate_KeyPress(KeyAscii As Integer)
MaskData txtdtate, KeyAscii
End Sub
função show de bola mesmo essa
dentro de um modulo cv coloca
Function MaskData(Text1 As TextBox, codigoasc As Integer)
Text1.MaxLength = 10
[ô]quando o usuário apagar ele sai da função
If codigoasc = 8 Or codigoasc = 22 Then
Exit Function
Else
If Chr(codigoasc) < 0 Or Chr(codigoasc) > 9 Then
[ô]aqui aceita o usuário digitar barra dentro da posicao correta
If Text1.SelStart = 2 Or Text1.SelStart = 5 Then
If codigoasc = 47 Then
Exit Function
End If
Else
[ô]aqui ele não pode digitar a barra fora da posição
If codigoasc = 47 Then
codigoasc = 0
Exit Function
End If
End If
codigoasc = 0
Exit Function
End If
End If
[ô]coloca barra da data automaticamente quando chega na posicao correta
If Text1.SelStart = 2 Or Text1.SelStart = 5 Then
Text1.SelText = Text1.SelText + [Ô]/[Ô]
End If
End Function
e ta proriedade do text box vc faz assim
Private Sub txtdtate_KeyPress(KeyAscii As Integer)
MaskData txtdtate, KeyAscii
End Sub
função show de bola mesmo essa
Cara.
é claro que cada um tem uma forma diferente de fazer, e não quero de maneira nehuma desmerecer ninguém.
Mas, ainda assim, acredito que no lostfocus com apenas duas linhas, e o banco com um campo tipo date, fica
muito mais enxuto.
é a minha opinião, sem precisar do maskedit, posso estar errado.
. . .
Tópico encerrado , respostas não são mais permitidas