• Lunes 29 de Abril de 2024, 04:08

Autor Tema:  Txt En Euros!  (Leído 1917 veces)

sndr82

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Txt En Euros!
« en: Martes 6 de Septiembre de 2005, 11:23 »
0
Hola foro!!!

Tengo un txt donde me ponen una cantidad de dinero en euros,
1. en el campo tengo el siguiente codigo para q me ponga puntos cada 3 digitos:
      X = Len(txtimporte.Text)
      txtimporte.Text = Format(txtimporte, "#,###")   'en ejecución es un "." no ","
      txtimporte.SelStart = X + 1
2. Tambien tengo el siguiente codigo para que solo me puedan ingressar numeros y comas:
   If (KeyAscii <> 48 And KeyAscii <> 49 And KeyAscii <> 50 And KeyAscii <>      51 And KeyAscii <> 52 And KeyAscii <> 53 And KeyAscii <> 54 And KeyAscii <> 55 And KeyAscii <> 56 And KeyAscii <> 57 And KeyAscii <> 8 And KeyAscii <> 44 Or KeyAscii = 13) Then
        KeyAscii = 0
    End If

El problema es q si pongo el codigo 1 no me deja escribir "," -comas- como lo puedo solucionar????
MUCHAS GRACIASSSSS!!!!!!!!!!!!!!!!
· Ï Wånt Drînk Yôur Söul ·

nelson_z

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Txt En Euros!
« Respuesta #1 en: Martes 6 de Septiembre de 2005, 18:45 »
0
Porque no usas el control de Microsoft que se llama "masked Edit "
saber agregar componentes??

a este control ... solo le pegas el formato que quieres  te vas a las propiedades... y en formato... ahi le das el formato deseado....


sale...

sndr82

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Txt En Euros!
« Respuesta #2 en: Martes 6 de Septiembre de 2005, 19:14 »
0
Holaa!!

Esto del "masked Edit" ... es un componente que hay q agregarle? pq no lo encuentro, y en la web de microsoft el ejemplo que da es como si le tuvieras que dar las propiedades mediante codigo...... en mi txt ya le doy las propiedades mediante codigo... cuál es la diferencia entonces????

Muchas grácias Nelson!!!!
· Ï Wånt Drînk Yôur Söul ·

nelson_z

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Txt En Euros!
« Respuesta #3 en: Martes 6 de Septiembre de 2005, 21:04 »
0
para agregar el componente te ubicas en  toolbox... y presionas el boton derecho del raton y seleccionas Components... o en Projects >> Componets .... o con CTRL + T

ya que te abrio la ventana... seleccionas el check ,,, qu edice...

Microsoft Masked Edit Control 6.0
y le das aplicar y veras que aparece el control en la ventana del ToolBox

en las propiedades  del objeto ... trae un formarto,... ahi le pones tu formato...


sale...

sndr82

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Txt En Euros!
« Respuesta #4 en: Jueves 8 de Septiembre de 2005, 13:58 »
0
Buenas,

No conocia este control en VB!
Esta muy bien pero queda un poco feo en mi caso ya que no se la cantidad de dinero que me van a ingressar (desde 100€ hasta 100.000.000.000€ o más) asi que si pongo todos los espacios para una cantidad grande y me ponen una peke aparece asi mientras lo editas:  100______,15  
Y así cuando pierde el enfoque: 100           ,15

He estado mirando si se le puede "engañar" con los espacios pero no.... verdad?

Gracias de nuevo
· Ï Wånt Drînk Yôur Söul ·

Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Txt En Euros!
« Respuesta #5 en: Viernes 9 de Septiembre de 2005, 09:28 »
0
Hola sndr82, podrías limitar la introducción de ciertos caracteres desde el evento KeyPress del txt y después formatear ese número en el LostFocus.

Ejemplo:

Código: Text
  1. 'Función que devuelve si ya ha metido una coma en el text
  2. Private Function mfbYaHayUnaComa() As Boolean
  3.     mfbYaHayUnaComa = IIf(InStr(1, Text1.Text, &#34;,&#34;) = 0, False, True)
  4. End Function
  5.  
  6. 'Evento que controla todo lo que se mete en el texto
  7. Private Sub Text1_KeyPress(KeyAscii As Integer)
  8.     If Chr(KeyAscii) = &#34;.&#34; Then KeyAscii = Asc(&#34;,&#34;)
  9.     
  10.     If KeyAscii &#60;&#62; vbKeyBack Then
  11.         If Len(Text1.Text) &#62; 0 Then
  12.             If KeyAscii &#60;&#62; Asc(&#34;,&#34;) Then
  13.                 If Not IsNumeric(Chr(KeyAscii)) Then
  14.                     KeyAscii = 0
  15.                     Beep
  16.                 End If
  17.             ElseIf mfbYaHayUnaComa Then
  18.                 KeyAscii = 0
  19.                 Beep
  20.             End If
  21.         Else
  22.             If Not IsNumeric(Chr(KeyAscii)) Then
  23.                 KeyAscii = 0
  24.                 Beep
  25.             End If
  26.         End If
  27.     End If
  28. End Sub
  29.  
  30. 'Cuando pierdo el foco formateo el número introducido
  31. Private Sub Text1_LostFocus()
  32.     Text1.Text = Format(Text1.Text, &#34;#,###,###,###,###,##0.00&#34;)
  33. End Sub
  34.  

Y ya si quieres que al pulsar el INTRO se pierda el foco del control, o bien lo controlas en el objeto txt o bien en las propiedades del formulario le pones la propiedad KeyPreview a TRUE y pones esto:

Código: Text
  1. Private Sub Form_KeyPress(KeyAscii As Integer)
  2.     If KeyAscii = vbKeyReturn Then
  3.         KeyAscii = 0
  4.         SendKeys &#34;{tab}&#34;
  5.     End If
  6. End Sub
  7.  

Espero que te sirva.

PD: He posteado porque veo que el control Masked Edit no te gusta  :P

Saludos,
« §hÿqµïllæ »