Ayuda para trabajar con listbox en VFP

Estoy desarrollando una aplicación en VFP y necesito ayuda sobre un list box en VFP.
Explico con palabras: Tengo un registro de una bases de datos de personas, por ejemplo: Juan García 3895267, necesito que al cliquear en el listboxNombre: "Juan" automáticamente en el listboxApellido debe ubicar su apellido: García y listboxTelefono: 3895267 y viceversa.

1 respuesta

Respuesta
1
Podrías hacer el favor de explicarme un poco más detalladamente el problema, pues no entendí muy bien que digamos...
Reformulo la pregunta...
Tengo 3 listbox denominados listboxNombre, listboxApellido y listboxTelefono, cada uno ligado a un campo de una sola base de datos que contiene los datos correspondientes... hasta ahí todo ok.
Tengo dos registros:
Nombre: Juan; Apellido: Garcia; Telefono: 3596762
Nombre: Diego; Apellido: Rosales; Telefono: 8968624
Necesito que al clickear (ya en la ejecución del programa) en el listboxNombre que contiene el nombre "Juan" automáticamente en el listboxApellido ubique su apellido: "García" y en listboxTelefono su teléfono "3895267".
Asimismo que si hago click en el listboxApellido perteneciente a "Rosales" automáticamente ubique en el listboxNombre su nombre: "Diego" y en listboxTelefono su teléfono "8968624".
Espero haber sido claro y por favor necesito el dato urgente.
Gracias de antemano por tu respuesta positiva.
Primero que todo la tabla a la que están enlazados los controles listbox debe tener un campo que debe ser una llave primaria (esta puede ser un Id consecutivo o o tal vez el número del documento de identificación las personas registradas (CampoCodigo)), en este orden de ideas haces algo como lo siguiente:
1. Establece la propiedad BoundColumn de los controles ListBox a 2.
2. En el Evento destroy de los controles ListBox escribe el siguiente código (el de nombre, apellido y teléfono respectivamente):
If Used("cNombres")
  Use In cNombres
Endif
If Used("cApellidos")
  Use In cApellidos
Endif
If Used("cTelefonos")
  Use In cTelefonos
Endif
3. Establece la propiedad RowSourceType de los controles ListBox a valor 3 (Sentencia SQL)
4. Escribe en la propiedad RowSource de los controles ListBox el siguiente código (el de nombre, apellido y teléfono respectivamente):
Select CampoNombre, CampoCodigo From NombreTabla Order By CampoCodigo IntoCursor cNombre
Select CampoApellido, CampoCodigo From NombreTabla Order By CampoCodigo IntoCursor cApellido
Select CampoTelefono, CampoCodigo From NombreTabla Order By CampoCodigo IntoCursor cTelefonos
5. En el Evento InteractiveChange de los controles ListBox escribes el siguiente código
Control ListBoxNombre
Select NombreTabla (tabla de los controles listbox)
=Seek(This.Value, "NombreTabla", "CampoCódigo")
With Thisform
   .ListBoxApellido.ListIndex = This.ListIndex
   .ListBoxTelefono.ListIndex = This.ListIndex
Endwith
Control ListBoxApellido
Select NombreTabla (tabla de los controles listbox)
=Seek(This.Value, "NombreTabla", "CampoCodigo")
With Thisform
   .ListBoxNombre.ListIndex = This.ListIndex
   .ListBoxTelefono.ListIndex = This.ListIndex
Endwith
Control ListBoxTelefono
Select NombreTabla (tabla de los controles listbox)
=Seek(This.Value, "NombreTabla", "CampoCodigo")
With Thisform
   .ListBoxNombre.ListIndex = This.ListIndex
   .ListBoxApellido.ListIndex = This.ListIndex
Endwith
Nota: Los nombres CampoCodigo, CampoNombre, CampoApellido y CampoTelefono corresponden a los nombres de los campos de tu tabla, nombre de tu tabla, haciendo resaltar que CampoCodigo es la campo llave primaria que te mencioné arriba.
Esta es una solución al problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas