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

Evitar Edicion y Borrado de ComboBox

Estas en el tema de Evitar Edicion y Borrado de ComboBox en el foro de Visual Basic clásico en Foros del Web. Mi pregunta es: cual es codigo adecuado para evitar la edicion y borrado de un combobox Con este codigo evito escribir en el combo pero ...
  #1 (permalink)  
Antiguo 07/11/2008, 08:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Evitar Edicion y Borrado de ComboBox

Mi pregunta es:
cual es codigo adecuado para evitar la edicion y borrado de un combobox

Con este codigo evito escribir en el combo pero si oprimo la tecla Delete ó Supr me borra el contenido, como evito que la tecla Delete ó Supr me borre el combobox

Private Sub Combo1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Tambien tengo claro que si pongo en el combobox en la propiedad Style = 2, no lo puedo editar
pero esta propiedad me da problemas cuando quiero limpiar el combobox desde codigo
Ejemplo: Combo1.Text = ""
  #2 (permalink)  
Antiguo 07/11/2008, 08:40
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: Evitar Edicion y Borrado de ComboBox

Coloca la propiedad Style a 2 y cuando quieras limpiar coloca:
Código vb:
Ver original
  1. Combo.ListIndex = -1
P.S.: Me refiero a limpiar la selección, que al parecer es a lo que te refieres.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/11/2008, 08:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Evitar Edicion y Borrado de ComboBox

Gracias pero ya lo intente y tambien me da problemas

Al usar Combo1.ListIndex =-1

Por alguna razon que no entiendo hasta ahora, deberia de funcionar

Por eso creo que lo mas seguro seria usar codigo

Private Sub Combo1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Este codigo que te planteo le hace falta una sola linea, pero no se cual sea

Creo que es con el numero de tecla que le corresponde a Delete ó Supr
  #4 (permalink)  
Antiguo 07/11/2008, 09:12
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: Evitar Edicion y Borrado de ComboBox

Yo sigo considerando más eficaz usar el Style 2, ¿qué clase de problemas te da cuando cambias el ListIndex a -1?.

P.S.: Bueno, si de todos modos quieres usar la forma que mencionas prueba usando el evento KeyDown en vez del KeyPress.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 07/11/2008, 11:32
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Evitar Edicion y Borrado de ComboBox

Ya entendi porque me da problemas este codigo:

Combo1.ListIndex =-1

Resulta que el combo lo tengo enlazado con un recordset cuando hago Click en el

cuando ejecuto esta accion Combo1.ListIndex =-1

Me marca error porque no encuentra un registro vacio que coincida con el combo, logico el ListIndex =-1 es un registro vacio

el Error de If, EOF, etc.

Si me puedes ayudar con este error que te explico aqui
o la otra manera que ya te habia comentado que es bloquear la tecla Delete ó Supr
  #6 (permalink)  
Antiguo 07/11/2008, 11:37
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: Evitar Edicion y Borrado de ComboBox

Cancela también el evento KeyDown, así no ya no se podrá borrar usando la tecla Delete.

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 07/11/2008, 11:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Evitar Edicion y Borrado de ComboBox

Los Eventos KeyPress y KeyDown no cancelan la tecla Delete ó Supr

Los mas indicado seria:

Usar el numero que corresponde a la tecla DELETE y cancelarla

ó

La otra opcion es: evitar el Error de If, EOF
  #8 (permalink)  
Antiguo 07/11/2008, 11:51
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: Evitar Edicion y Borrado de ComboBox

Pues yo he probado con el KeyDown y sí, me canceló la tecla Suprimir.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 07/11/2008, 12:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Evitar Edicion y Borrado de ComboBox

No funciona conmigo

Ni el evento KeyPress ni tampoco el evento KeyDown

Si me puedes mostrar el codigo exacto que usas tu para el Evento KeyDown

quizas sea diferente al mio
  #10 (permalink)  
Antiguo 07/11/2008, 12:18
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: Evitar Edicion y Borrado de ComboBox

¿Qué tal si en vez de complicarte la vida le pones la propiedad Locked a True? .

Saludos .

EDITO: A pesar de que de esa forma no permite seleccionar nada, en fin, con el KeyDown sería:
Código vb:
Ver original
  1. Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
  2. KeyCode = 0
  3. End Sub
  4. Private Sub Combo1_KeyPress(KeyAscii As Integer)
  5. KeyAscii = 0
  6. End Sub
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 07/11/2008, 12:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 16
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Evitar Edicion y Borrado de ComboBox

Gracias

Lo habia resuelto asi:

Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
KeyCode = 0
End If
End Sub

Pero creo que es mas sencillo tu codigo lo voy a usar

Gracias
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 18:45.