TEXT DATA

MARCELOFAZAN 23/04/2010 09:28:59
#340013
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
EDERMIR 23/04/2010 10:07:02
#340016
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.
ADHEL 23/04/2010 12:18:54
#340032
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
MICROSCHEME 23/04/2010 14:24:47
#340044
Resposta escolhida

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

. . .

MARCELO.TREZE 23/04/2010 15:18:06
#340058
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:

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

EDERMIR 23/04/2010 15:59:40
#340062
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.
MARCELOFAZAN 24/04/2010 15:28:33
#340122
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


MICROSCHEME 24/04/2010 22:42:54
#340161

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 . . .

MARCELOFAZAN 25/04/2010 14:08:30
#340202
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
JANDER 25/04/2010 15:32:44
#340205
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
MICROSCHEME 25/04/2010 18:08:29
#340214

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.

. . .
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas