LISTBOX

2,165 views
Skip to first unread message

PabloZa

unread,
Jul 5, 2011, 3:05:55 PM7/5/11
to Comunidad de Visual Foxpro en Español
Hola a todos.
Tengo un Objeto LISTBOX en el cual cargo desde la tabla CALLES.DBF los
campos nom_calle (nombre de la calle) y cod_calle (codigo de la calle)
de la siguiente manera:

*----- PROCEDIMIENTO INIT() DEL LISTBOX -----
SELECT calles
GO TOP
DO WHILE !EOF()
WITH THIS
.AddListItem(calles.nom_calle)
.AddListItem(PADL(calles.cod_calle,4,"0"), .NewItemID, 2)
ENDWITH
SKIP
ENDDO

Como resultado de esa carga el objeto quedaría con 2 columnas: una con
los nombres y otra con los códigos de las calles (ordenados
alfabeticamente).
Debajo un ejemplo:

3 DE FEBRERO 914
AVDA.UNO 067
BELGRANO 025
BUENOS AIRES 554
CHACABUCO 335
LA PAMPA 111
SAN MARTIN 132

de que manera le indico al LISTBOX que lo que tiene que mostrar como
valor predeterminado es la calle "LA PAMPA" si con lo
unico que cuento al momento de ejecutar el objeto es con el código
"111" ?

Yvan GMAIL

unread,
Jul 5, 2011, 3:15:21 PM7/5/11
to publice...@googlegroups.com
* BoundColumn .- estableces de que columna quieres que retorne el dato

Xvalor = Thisform.MiLista.List(Thisform.Milista.ListIndex,1))
* Te devuelve el dato que esta en la segunda columna

Pero no entendi muy bien que deseas.. pq
.. me imagino que puedes referirte-.. a cuando asignas un valor al combo
como sabe a donde va a ubicar.. pues como el boundcolumn es 2 .. va a
comparar contra los codigos.


Saludos.
Yvan Carranza


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de PabloZa
Enviado el: Martes, 05 de Julio de 2011 02:06 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] LISTBOX

Pablo Zanini (Studio X)

unread,
Jul 5, 2011, 3:59:20 PM7/5/11
to publice...@googlegroups.com
Ok. A ver si puedo explicarme mejor.
Siguiendo con el ejemplo: al momento de ejecutarse el Listbox, el único dato
con el que cuento es el código "111" que corresponde a la calle "LA PAMPA".
Cómo le indico al Listbox que lo que debe mostrarme como valor inicial es el
nombre de la calle ("LA PAMPA") a partir de ese código?

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Yvan GMAIL
Enviado el: martes, 05 de julio de 2011 04:15 p.m.
Para: publice...@googlegroups.com
Asunto: RE: [vfp] LISTBOX

Viktor Velazquez

unread,
Jul 5, 2011, 4:02:52 PM7/5/11
to publice...@googlegroups.com
chkte la propiedad  boundcolumn  value y displayvalue   esto si tienes vfp9

value te va a dar "111"
display value "la pampa"

en boundcolumn puedes cambiarlo a 2 (columna)
saludos

Yvan GMAIL

unread,
Jul 5, 2011, 4:07:42 PM7/5/11
to publice...@googlegroups.com
A ver..
Se supone que para llenar la lista no tienes problemas... el tema es
supongamos que quieres modificar un registro de una persona.. y quieres que
por defecto ya se cargue en el combo.. a que "Distrito" pertenece.
Si la lista tiene 2 columnas..
primera columna: nombre
segunda columna : codigo
BoundColumn = 2

Y si luego pones.
Thisform.MiLista.Value = "132"
Este automaticamente seleccionara "San Martin", ya que se basa en el
boundcolum.. al igual que el boundcolumn sirve para decirle de que columna
quieres retornar el dato.

Saludos.
Yvan Carranza


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Pablo Zanini (Studio
X)
Enviado el: Martes, 05 de Julio de 2011 02:59 p.m.

extremo

unread,
Jul 5, 2011, 4:57:38 PM7/5/11
to Comunidad de Visual Foxpro en Español
ademas de todo lo que te dijeron si quieres que te aparezca lampa por
defecto coloca en el init del listbox lo siguiente:

This.list1.ListIndex = 1

Bendiciones

Pablo Zanini (Studio X)

unread,
Jul 5, 2011, 5:58:22 PM7/5/11
to publice...@googlegroups.com
Gracias Yvan. Funcionó.
Ahora, si quisiera hacer lo mismo pero trabajando directamente con la tabla
(es decir sin cargar los datos en una matriz) como sería?

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Yvan GMAIL

Enviado el: martes, 05 de julio de 2011 05:08 p.m.

Yvan GMAIL

unread,
Jul 5, 2011, 6:02:35 PM7/5/11
to publice...@googlegroups.com
En caso trabajes con dbf
1. Si deseas puedes enlazar el combo con la tabla ..
Thisform.MiLista.RowSourceType = 6 && Campos
Thisform.MiLista.RowSource = " DESCRIP,CODIGO"
*** Con esta no estoy seguro como pones los nombres.. normalmente trabajo
con el segundo.. pero con postgresql o SQL... Mysql.

2.
* Thisform.MiLista.RowSourceType = 3 && Sentencia SQL
* Thisform.MiLista.RowSource = "SELECT DESCRIP,CODIGO FROM MiTabla Into
Cursor cur_temp_etc "
Thisform.MiLista.Refresh


Saludos.
Yvan Carranza


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Pablo Zanini (Studio
X)

Enviado el: Martes, 05 de Julio de 2011 04:58 p.m.

Pablo Zanini (Studio X)

unread,
Jul 6, 2011, 7:29:55 AM7/6/11
to publice...@googlegroups.com
Yvan:
Usé la opción 1 y funcionó. Aprovecho y te paso la sintaxis exacta:

Thisform.MiLista.RowSourceType = 6 && Campos Thisform.MiLista.RowSource = "
MiTabla.DESCRIP,CODIGO"

Lo que me sucede ahora es que la tabla está ordenada por el código y a su
vez relacionada con otra tabla y lo que necesito es mostrar las calles
ordenadas por nombre pero sin perder la relación. Se entiende? Gracias

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Yvan GMAIL

Enviado el: martes, 05 de julio de 2011 07:03 p.m.

Yvan GMAIL

unread,
Jul 6, 2011, 9:15:34 AM7/6/11
to publice...@googlegroups.com
Ok.
Entonces aplicar un set order por ese campo (nombre)

O
Llenar el combo con la opcion 2..
Thisform.micombo.rowsource= "Select descrip,codigo from mitabla order by
descrip into cursor micur_temp"

Saludos.
Yvan Carranza

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Pablo Zanini (Studio
X)

Enviado el: Miércoles, 06 de Julio de 2011 06:30 a.m.

Reply all
Reply to author
Forward
0 new messages