Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Borrar cajas de texto con la funcion Esc

Estas en el tema de Borrar cajas de texto con la funcion Esc en el foro de Visual Basic clásico en Foros del Web. Hola a todos, necesito una ayudita, es que realizo una consulta en modo diseño de mi formulario, pero cuando quiero hacer otra consulta diferente me ...

  #1 (permalink)  
Antiguo 04/05/2009, 09:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Borrar cajas de texto con la funcion Esc

Hola a todos,

necesito una ayudita,

es que realizo una consulta en modo diseño de mi formulario, pero cuando quiero hacer otra consulta diferente me debo salir y volver a entrar para consultar denuevo.

lo que quiero es que no me tenga que salir y que al presionar la tecla esc se me pongan en blanco los text y pueda hacer la consulta normalmente.

yo se que es con la funcion keypress=27 pero la duda es que no se donde programarlo. gracias por las respuestas.
  #2 (permalink)  
Antiguo 04/05/2009, 11:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

En el evento KeyPress del control textbox pone if keyascii=27 then text1.text="" endif
  #3 (permalink)  
Antiguo 04/05/2009, 12:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Gracias ema... por responder

eso lo se pero estoy confundida en donde lo debo programar, ya que es despues de que consulto y quiero consultar otro.

no hay como tal un boton ni nada donde yo lo pueda programar. estoy enredad es en que parte del codigo lo pongo para que el evento funcione.
  #4 (permalink)  
Antiguo 04/05/2009, 13:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Ahi mismo te dije, haces doble click en el textbox y en la parte de los codigos del formulario le buscas en el menu desplegable el evento "KeyPress" del textbox correspondiente.
  #5 (permalink)  
Antiguo 04/05/2009, 13:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

gracias ema por responderme denuevo.

pero eso ya lo habia probado y no hace absolutamente nada, descubrí que no hace nada porque en ese momento no tiene el foco.

he ensayado con varias funciones (keydown)mandandole el evento del esc pero no, llegue a la conclusion que vb for application no tiene esta forma. la solucion es poner un boton donde me limpie las cajas de texto.

gracias de todas maneras.
  #6 (permalink)  
Antiguo 04/05/2009, 14:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Hace lo siguiente: crea un control timer con un intervalo lo mas pequeño posible y ponele el codigo
Código:
if keyascii=27 then text1.text="" endif
, de esta manera siempre va a estar atento a que se presione la tecla escape, de esta manera al hacerlo limpia la caja de texto, suponiendo que esta se llama text1.text como te puse en el codigo de ejemplo, espero que te sirva.
  #7 (permalink)  
Antiguo 04/05/2009, 15:00
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Ema... vba no tiene el control timer.
entonces no me serviria.
  #8 (permalink)  
Antiguo 04/05/2009, 15:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Visual Basic si tiene timer, es el relojito a la izquierda en la lista de controles.
  #9 (permalink)  
Antiguo 04/05/2009, 15:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

ema hice lo que me digiste y no hace nada anexo el cod


TimeValue("00:00:1")

if keypress=27 then
text_fecha.text=""
.
.
.
.
  #10 (permalink)  
Antiguo 04/05/2009, 15:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Hola. No hay problema. Prueba lo siguiente:

1) establece la propiedad KeyPreview del formulario a true. Esto es imprescindible pues por defecto está en "false" De esta manera todos los eventos del teclado son registrados primero por el formulario y después por el control que tiene el foco si lo hubiera.

2) en el evento Form_KeyPress (doble click sobre el formulario, evento KeyPress) investiga el valor de KeyAscii. Por ejemplo:

Código:
If KeyAscii = vbKeyEscape Then '  KeyEscape = 27
    KeyAscii = 0 'Opcional, evita que sea visto después por los controles, ya que es pasado por referencia...
    If vbOK = MsgBox("¿Limpiar los datos introducidos?", vbOKCancel) Then
        'Rutina para vaciar todos los TextBox:
        Dim CT As Control
        For Each CT In Me.Controls
            If TypeOf CT Is TextBox Then
                 CT.Text = vbNullString
            End If
        Next CT
        'Y si quieres pones el foco en el TextBox que quieras:
        Text1.SetFocus 'Por ejemplo
    End If
End If
Un saludo, espero que te sirva.

Última edición por Marcelote; 04/05/2009 a las 16:08
  #11 (permalink)  
Antiguo 04/05/2009, 15:46
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Cita:
Iniciado por natalyro Ver Mensaje
ema hice lo que me digiste y no hace nada anexo el cod


TimeValue("00:00:1")

if keypress=27 then
text_fecha.text=""
.
.
.
.
Mira bien el codigo que puse, es keyascii no keypress
  #12 (permalink)  
Antiguo 04/05/2009, 15:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

UNA PREGUNTA Y QUE ES CT?

if CT is TextBox then 'con esta instruccion limpia todos los textbox sin especificarlos?

es que me sale un error: Objeto requerido en if CT is TextBox then.

gracias
  #13 (permalink)  
Antiguo 04/05/2009, 15:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Cita:
Iniciado por natalyro Ver Mensaje
UNA PREGUNTA Y QUE ES CT?

if CT is TextBox then 'con esta instruccion limpia todos los textbox sin especificarlos?

es que me sale un error: Objeto requerido en if CT is TextBox then.

gracias
Compañero, acabo de probar el mismo ejemplo que te dije que usaras y me funciona bien, te repito los pasos:

- Crea un timer y en la propiedad interval ponele 1
- Hace doble click en el timer para que te lleve al codigo, ahi escribi el siguiente codigo:
Código:
if keyascii=27 then
text_fecha.text=""
endif
De esa forma tan simple funciona perfecto, sino es porque estas haciendo algo mal.
  #14 (permalink)  
Antiguo 04/05/2009, 15:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

ema bb for application no tiene valor timer.
  #15 (permalink)  
Antiguo 04/05/2009, 16:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Cita:
Iniciado por natalyro Ver Mensaje
ema bb for application no tiene valor timer.
Pero es que no entiendo, estas utilizando visual basic 6 o alguna otra aplicacion para programar?
  #16 (permalink)  
Antiguo 04/05/2009, 16:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Cita:
Iniciado por natalyro Ver Mensaje
UNA PREGUNTA Y QUE ES CT?

if CT is TextBox then 'con esta instruccion limpia todos los textbox sin especificarlos?

es que me sale un error: Objeto requerido en if CT is TextBox then.

gracias
Hola.
CT es una variable de tipo Control (podría ser también tipo Object) que he declarado previamente con Dim CT as Control

Con el bucle For Each CT in Me.Controls recorro todos los controles del formulario.
Con If TypeOf CT is TextBox compruebo si el control actual referenciado por CT es un TextBox. Si es así, establezco su propiedad Text a "" (si pusiera msgbox CT.Name me mostraría el nombre del control, en el ejemplo, "Text1")

Había un error en el código, que ya he depurado. Lo he comprobado y funciona.
Es que la condición debía haber sido If TypeOf CT is TextBox. Perdona por el error.

Última edición por Marcelote; 04/05/2009 a las 16:20
  #17 (permalink)  
Antiguo 04/05/2009, 16:10
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 15 años
Puntos: 1
Respuesta: Borrar cajas de texto con la funcion Esc

Mira lo que pude hacer y funciono es esto (3 TextBox):

img15.imageshack.us/img15/5374/capturegox.jpg

Private Sub Text1_KeyDown(Keyascii As Integer, Shift As Integer)
If Keyascii = 27 Then
Text1.text = ""
Text2.text = ""
Text3.text = ""
End If
End Sub

Private Sub Text2_KeyDown(Keyascii As Integer, Shift As Integer)
If Keyascii = 27 Then
Text1.text = ""
Text2.text = ""
Text3.text = ""
End If
End Sub

Private Sub Text3_KeyDown(Keyascii As Integer, Shift As Integer)
If Keyascii = 27 Then
Text1.text = ""
Text2.text = ""
Text3.text = ""
End If
End Sub

Espero que te sirva
  #18 (permalink)  
Antiguo 04/05/2009, 16:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Cita:
Iniciado por juaco14 Ver Mensaje
Mira lo que pude hacer y funciono es esto (3 TextBox):
Hola, Juaco14. Sin ánimo de dármelas de listo, tu código está bien, pero si añades por ejemplo 3 controles más tendrías que añadir el código en esos 3 controles nuevos y modificar el que ya existe en cada uno de los controles ya existentes. Se haría largo y poco inmune a los errores.
Prueba lo que puse más arriba, verás qué bien funciona, independientemente del número de controles TextBox que haya en el formulario.
A Natalyro l@ confundí inicialmente pues puse un error en el código que ya solucioné.
Un saludo.
  #19 (permalink)  
Antiguo 04/05/2009, 17:20
 
Fecha de Ingreso: diciembre-2007
Ubicación: Lima
Mensajes: 23
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

El ejemplo de Marcelote funciona perfecto, y esta muy claro.

Saludos.
  #20 (permalink)  
Antiguo 04/05/2009, 17:57
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 15 años
Puntos: 1
Respuesta: Borrar cajas de texto con la funcion Esc

Lo que paso es que yo lo probé y no me funciono por eso puse mi código.
Debió haber sido por un error mio.
Saludos.
  #21 (permalink)  
Antiguo 05/05/2009, 07:11
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Gracias a todos por sus respuestas.

Marcelote a ti tambien gracias funciono perfecto, gracias, ademas por que todos respondieron rapido.

me surgio una duda y si tambien quiero los combobox como lo programaria?

porque con texbox es tal cual pero con CmbBox no se borran los combos.
  #22 (permalink)  
Antiguo 05/05/2009, 07:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Borrar cajas de texto con la funcion Esc

Puedes agregar:
Código vb:
Ver original
  1. If TypeOf CT Is ComboBox Then
  2.     CT.ListIndex = -1
  3. End If
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #23 (permalink)  
Antiguo 05/05/2009, 07:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

David gracias pero el ListIndex no me lo reconoce.
  #24 (permalink)  
Antiguo 05/05/2009, 07:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Borrar cajas de texto con la funcion Esc

¿En qué sentido "no lo reconoce"? De todos modos, dependiendo del modo en que esté el ComboBox puedes usar:
Código vb:
Ver original
  1. CT.Text = ""
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #25 (permalink)  
Antiguo 05/05/2009, 07:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Borrar cajas de texto con la funcion Esc

Con el nombre del control y un clear se puede borrar un combobox, por ejemplo: combo1.clear, de esta manera aplicas esa linea a la funcion que utilices con la tecla escape.
  #26 (permalink)  
Antiguo 05/05/2009, 08:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

ema gracias, pero necesito borrar 5 de una y solo me borra uno.
  #27 (permalink)  
Antiguo 05/05/2009, 08:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Borrar cajas de texto con la funcion Esc

En ese caso, incluyelo dentro del bucle For .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #28 (permalink)  
Antiguo 05/05/2009, 08:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

David lo tengo dentro del bucle es mas envio el codigo que entre todos hemos hecho

If KeyAscii = vbKeyEscape Then ' KeyEscape = 27
KeyAscii = 0 'evita que sea visto después por los controles.
'Rutina para vaciar todos los TextBox:
Dim CT As Control
For Each CT In Me.Controls 'recorre todos los controles
If TypeOf CT Is TextBox Or ComboBox Then
CT.Text = vbNullString
Combo_Cliente.Clear
Cmb_Producto.Clear
Combo_terminos.Clear
Cmb_Direccion.Clear
Cmb_Moneda.Clear
Combo_Vendedor.Clear
Cmb_Moneda2.Clear
Combo_Activa.Clear
End If
Next CT
End If
End Sub
  #29 (permalink)  
Antiguo 05/05/2009, 08:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Borrar cajas de texto con la funcion Esc

En lugar de usar el nombre del combo debes usar CT que hace referencia al control actual en la iteración. Además, sugiero que separes los TextBox de los ComboBox (en dos bloques if), de lo contrario va a dar error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #30 (permalink)  
Antiguo 05/05/2009, 08:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 131
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Borrar cajas de texto con la funcion Esc

Davis hice lo que me digiste:

en vez del nombre del combo CT, y separados los tex de los Combo en if aparte,

asi no borra ni siquiera el primer Combo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:21.