Como puedo desactivar un elemento en un listbox o combobox agregando una simple barra inversa al inicio de la expresión.

1,092 views
Skip to first unread message

Elides Paredes

unread,
Mar 4, 2015, 8:54:38 AM3/4/15
to publice...@googlegroups.com
Estimados amigos.

De acuerdo con la ayuda: 'Se puede desactivar un elemento en un listbox o combobox agregando una simple barra inversa al inicio de la expresión'. Me gustaría poder hacerlo desde las tablas cuando coloco la información a elegir desde un cuadro de lista o cuadro combinado, es que utilizo mucho los cuadros de listas para seleccionar textos y me gustaría presentar algunos textos que orienten al usuario ejemplo:

\Carrocería Lateral izquierdo
   guardafango delantero izquierdo
   Puerta delantera izquierda
   Puerta Trasera izquierda.
'\'Carrocería Lateral Derecho
   Puerta delantera derecha
   Puerta Trasera derecha. 

Entonces Carrocería lateral derecha e izquierda no son opciones a elegir son una forma de organizar la información que presenta la lista. Por eso quiero desactivar ese registro, ya probé ponerle al principio "\" , \carrocería, ("\"), etc. en fin todas la combinaciones posibles y no me funciona. Estoy haciendo algo mal o no se puede hacer desde un registro de un campo.?
Las veces que he consultado aquí con ustedes los expertos, es porque lo he intentado mil veces y no puedo.

Una vez mas agradecido por la ayuda que me puedan brindar y que me han brindado.
Elides Paredes
de Barquisimeto, Venezuela

Jorge L. Florez C.

unread,
Mar 4, 2015, 10:18:20 AM3/4/15
to publice...@googlegroups.com
Hola Elides.

Lo que puedes hacer es crear un array y ahi cargar los datos para tu combobox con los bloqueos de opciones respectivas, cambia la propiedad RowSourceType a Array y en RowSource colocas el nombre de tu array.

Saludos
Jorge Florez

Elides Paredes

unread,
Mar 4, 2015, 12:03:39 PM3/4/15
to publice...@googlegroups.com


Gracias, Jorge Florez, por la pronta respuesta.

Lamentablemente no comprendo como pueden ser esos bloqueos respectivos. Tampoco entiendo, si coloco en el cuadro de lista, en lugar de campos de una tabla, los registros contenidos de un arreglo, ¿En ese caso funciona el carácter especial "\ " que menciona la ayuda?

Lo que hice para subsanar el problema es dejar registros en blanco (en la tabla), que separan (visualmente en el cuadro de lista) unos registros de otros, pero el usuario puede elegir uno en blanco y con algoritmo señalo al usuario (con un mensaje) que no ha elegido un registro, que lo intente de nuevo.

Mi intención es mostrarlo pero inhabilitado, de tal manera que el usuario, tenga un texto dentro del cuadro de lista, pero que no pueda seleccionar esa opción. Es lo que dice la ayuda sobre el carácter ('\') delante del texto que presenta el cuadro de lista.

Otra posible forma de hacer lo que quiero es mostrar una línea separadora, lo cual se logra según la ayuda colocando el carácter "\" y un  "-", o sea  '\-' , pero no me funciona.

¿Podrías orientarme con mas detalles, como lo haría con arreglos?

Antonio.xt

unread,
Mar 4, 2015, 12:34:18 PM3/4/15
to publice...@googlegroups.com

Elides, te paso un ejemplo que acabo de probar, es un arreglo llenado a mano, pero puede ser de una tabla o de algun otro modo, y funciona tal y como lo necesitas, no se en que te esta fallando, o que mensaje te muestra.

* Despues de crear una propiedad en el formulario, por ejemplo la propiedad la llamanos "arPartesColision"

DIMENSION Thisform.arPartesColision[7,2]

Thisform.arPartesColision[1,1] = '\Carrocería Lateral izquierdo'
Thisform.arPartesColision[1,2] = 0
Thisform.arPartesColision[2,1] = 'Guardafango delantero izquierdo'
Thisform.arPartesColision[2,2] = 1
Thisform.arPartesColision[3,1] = 'Puerta delantera izquierda'
Thisform.arPartesColision[3,2] = 2
Thisform.arPartesColision[4,1] = 'Puerta Trasera izquierda'
Thisform.arPartesColision[4,2] = 3
Thisform.arPartesColision[5,1] = '\Carrocería Lateral Derecho'
Thisform.arPartesColision[5,2] = 0
Thisform.arPartesColision[6,1] = 'Puerta delantera derecha'
Thisform.arPartesColision[6,2] = 4
Thisform.arPartesColision[7,1] = 'Puerta Trasera derecha'
Thisform.arPartesColision[7,2] = 5

Y al comboBox le defines estas propiedades tambien:
RowSource = 'Thisform.arPartesColision'
RowSourceType = 5 - Array

Elides Paredes

unread,
Mar 4, 2015, 3:03:29 PM3/4/15
to publice...@googlegroups.com
Amigo Antonio.
Me funcionó bien con la matriz, Aunque mi gran duda es porque no puedo agregarle el mismo carácter especial '\' al registro (en la tabla) para que el cuadro de lista me inhabilite ese registro? Si no se puede lo haré entonces con matrices, pero me gustaría saber si se puede hacer desde la tabla. (es decir, meto los registros que quiero que me deshabilite el cuadro de lista, con el texto precedido del carácter '\' y debería funcionar. ¿No es así?

 La verdad hace años no trabajaba con matrices, muchas gracias por tu tiempo. Hice tu ejemplo (un poco diferente y funcionó) colocando un botón y un cuadro de lista en un formulario nuevo para probar. el botón tiene esto;
* En el formulario está un control list y un botón que tiene 
* Este código.

SELECT tipo_Transaccion && Tabla en entorno de datos

GO TOP 
tamano = RECCOUNT('tipo_Transaccion') 
DIMENSION arPartesColision[tamano]

FOR i=1 TO tamano
STORE tipo_Transaccion.Des_transa TO arPartesColision(I)
SKIP 
ENDFOR  
thisform.list1.RowSourceType = 0
thisform.list1.RowSource =" "
thisform.list1.RowSourceType = 5
thisform.list1.RowSource     = 'arPartesColision'

 
*thisform.list1.Requery 

  Eso hace lo que quiero, aunque ahora me surgió otra duda, algo que no había pasado, muestra la información en el cuadro de lista, pero, al hacer click la borra, parece que se borra el arreglo.

Coloque otro botón con thisform.list.requery y me dice 'arPartesColision' no es una matriz.
Aunque hace lo que quiero, muestra inhabilitado el registro, cuando le hago click o el cuadro de lista tiene el enfoque desaparecen los valores del cuadro de lista, Parece que desaparece la matriz.

Víctor Hugo Espínola Domínguez

unread,
Mar 4, 2015, 4:11:08 PM3/4/15
to publice...@googlegroups.com
Hola Elides

Yo hice la prueba con el campo de una tabla y funciona perfecto. Cómo estás cargando el listbox?

Saludos,
Víctor.
Lambaré - Paraguay.

Elides Paredes

unread,
Mar 4, 2015, 6:09:33 PM3/4/15
to publice...@googlegroups.com
Caramba Victor, gracias por contestar de nuevo. 
Y sobre todo me alegra saber que si se puede.

Básicamente le doy al cuadro de lista (no combo, me gusta que esté desplegado de una vez), en modo de diseño
 el RowSource = (mi tabla, ejemplo) = "proveedores.nom_provee, rif"  y RowsourceType = 2 o 6, Alias o campos.
Mi idea es poner por ejemplo en la tabla en el campo nom_provee=  '\proveedores de repuestos' y que aparezca como un encabezado en la lista. De primero en la lista, pero inhabilitada, Luego una lista de los proveedores de Repuestos, Luego otra fila con Proveedores de Servicios, igualmente inhabilitada y luego la lista de proveedores de servicios.
Con la matriz funciona, pero lo hago click al cuadro de lista y queda en blanco, aunque mantiene el RowSource

Víctor Hugo Espínola Domínguez

unread,
Mar 4, 2015, 6:58:52 PM3/4/15
to publice...@googlegroups.com
Hola Elides

Te muestro mi estilo de definición y carga del listbox:

With This.cntDatosAbm.vheMoverListsGrupos
    .lstSource.Clear()
    .lstSelected.Clear()
    .lstSource.DisabledItemForeColor = RGB(0, 0, 255)
    .lstSource.AddItem("0")
    .lstSource.List[.lstSource.NewIndex, 2] = "\Grupos Disponibles"
    .lstSelected.DisabledItemForeColor = RGB(255, 0, 0)
    .lstSelected.AddItem("0")
    .lstSelected.List[.lstSelected.NewIndex, 2] = "\Grupos Asignados"
    For lnI = 1 To Reccount("curGrupos")
        With .lstSource
            If curGrupos.Asignado = 0
                .AddItem(TRANSFORM(curGrupos.IdGrupo))
                .List[.NewIndex, 2] = curGrupos.Descripcion
            Endif
        Endwith
        With .lstSelected
            If curGrupos.Asignado = 1
                .AddItem(TRANSFORM(curGrupos.IdGrupo))
                .List[.NewIndex, 2] = curGrupos.Descripcion
            Endif
        Endwith
        SKIP 1 IN curGrupos
    Endfor
Endwith

RowSource: [None]
RowSourceType: 0-None

Adjunto imagen del efecto logrado.

Saludos,
Víctor.
Lambaré - Paraguay.



AbmUsuarios.png

Elides Paredes

unread,
Mar 4, 2015, 7:20:31 PM3/4/15
to publice...@googlegroups.com

Amigo Víctor, la verdad no entiendo nada.. Pero me gusta la usuaria.. jajajaja..

Estoy tratando de asimilarlo..

Disculpa el chiste malo, pero tengo varios días cambiando muchas cosas y no he logrado hacerlo. Y hoy en particular, pues ha sido más difícil de lo usual. No acostumbro a preguntar mucho, aunque si veo éste foro con mucha frecuencia porque aprendo muchas cosas. Solo pregunto cuando " siendo los dolores de parto."

Voy a tomar una ducha y vuelvo a revisar después de la cena, y si aún puedes por favor, necesito algo mas simple o el concepto mejor explicado. Mi duda es. ¿Se puede? ¿desde la tabla? ¿cómo debería escribir el campo? donde pongo ese carácter ' \ ' ?????


Muy agradecido

Elides Paredes

unread,
Mar 4, 2015, 7:58:29 PM3/4/15
to publice...@googlegroups.com
Disculpa pero por lo que veo estás insertando en el list con additem, no es un campo. Será que no se puede? he hecho varios intentos y nada. Ahora con el additem y con el arreglo también se hace, sin embargo con el arreglo al hacer click sobre el cuadro de lista desaparece la información.

Quizás sea mas fácil si alguien revisa lo que he hecho y me dice cuál es mi error?

Saludos
a- prueba borrar._zip

Víctor Hugo Espínola Domínguez

unread,
Mar 4, 2015, 8:44:12 PM3/4/15
to publice...@googlegroups.com
Hola Elides

Con RowSourceType = 2 - Alias NO funciona deshabilitar los items con la "\", adjunto tu formulario con las modificaciones pertinentes.

Saludos,
Víctor.
Lambaré - Paraguay.

Elides._rar

Jorge Kiernan

unread,
Mar 4, 2015, 9:06:06 PM3/4/15
to publicesvfoxpro

Sugerencia. X q no cambias el enfoque y usa una grilla? En aspecto es similar al lista box, con dinamic... asignas el aspecto "apagado" o de cambio de color que desees.

Alex Vargas

unread,
Mar 4, 2015, 10:14:18 PM3/4/15
to publice...@googlegroups.com
Victor Hugo, solo noveles en VFP tenes en esa lista !!, :-))
Seria interesante saber que hacen ahora, Van Diest la ultima vez que me comunique con es estaba con C#.

Saludos

Alex A. Vargas

Elides Paredes

unread,
Mar 4, 2015, 10:39:06 PM3/4/15
to publice...@googlegroups.com

Amigo Victor...

Acaba de superar a mi héroe Favorito, eres un Genio!! , no solo por resolver mi duda de Aaaaaños, sino también por enseñarme un método mas simple para llenar el cuadro de lista.. De verdad que estoy muy agradecido.

Muchísimas Gracias.
Elides Paredes.

Pd. El único consuelo es que realmente no se podía de la forma que quería, no obstante, de ésta forma es mas simple y eso es mejor de lo que esperaba..

Elides Paredes

unread,
Mar 4, 2015, 10:47:08 PM3/4/15
to publice...@googlegroups.com

Amigo 

jkiernan 

Gracias también por el comentario, siempre es bueno escuchar otras ideas. Pero Gracias al amigo Victor ya se cual es la solución. Uso muchos cuadros de listas porque lo veo mas sencillo que una grilla y de paso la grilla tiene otros problemas mas complejos que aunque he logrado resolverlos (en gran parte, gracias a ésta comunidad) y mucho empeño Sigo prefiriendo los cuadros de listas.

Es una forma muy simple para escribir lo que he llamado respuestas pre-establecidas, para evitar al máximo errores de transcripción del usuario. Así simplemente escoge la respuesta.

atentamente Elides Paredes. 



Reply all
Reply to author
Forward
0 new messages