Diapositiva 1 - PowerPoint PPT Presentation

1 / 11
About This Presentation
Title:

Diapositiva 1

Description:

Ofrecen una lista con cualquier n mero de opciones. ... en TextBoxes y un Grid que mostraba otra tabla, subordinado a la primera. ... – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 12
Provided by: Ope107
Category:

less

Transcript and Presenter's Notes

Title: Diapositiva 1


1
ListBox y ComboBox
Son controles, es decir, no contienen otros
objetos.
Ofrecen una lista con cualquier número de
opciones. Funcionalmente son muy similares, salvo
detalles.
Son más poderosos que un OptionGroup, cuyas
opciones son pocas.
Pueden prescindir de usar ControlSource. Si lo
usan, éste puede ser un campo de cualquier tipo.
2
Las opciones pueden estar formadas por una sola
columna
Pero pueden estar formadas por dos o más columnas
Para definir cuántas columnas tendrá el objeto,
se usa la propiedad ColumnCount. Para el primer
ejemplo, ColumnCount es 1 y para el segundo
ejemplo ColumnCount es 3.
3
Origen de las opciones
Hay varias formas de originar las opciones.
Veremos dos
Valores introducidos manualmente. En la propiedad
RowSourceType se elige 1 - Valor y en la
propiedad RowSource se escriben los valores,
separándolo con comas.
Para el ejemplo de opciones con una columna,
RowSource será
Álvarez Analía,García Juan,Hernández Alejandro
Para el ejemplo de opciones con tres columnas,
RowSource será
Álvarez Analía,Jujuy 475,15380,García
Juan,Laprida 1048,03475,Hernández Alejandro,Santa
Fe 2038,00926
4
Valores tomados de una tabla. Si hay miles de
clientes, sería imposible escribir a mano los
datos de cada opción. Como la tabla Cli ya posee
esos datos, se pueden construir las opciones
automáticamente a partir de ella.
En la propiedad RowSourceType se elige 6 - Campos
y en la propiedad RowSource se escribe la tabla,
un punto y un campo por cada columna a producir,
separándolos por comas.
Por ejemplo, si queremos un ListBox cuyas
opciones sean tomadas de los campos Nom y Cli de
la tabla Cli, formando 2 columnas, RowSource será
cli.nom,cli
Para que las opciones aparezcan ordenadas por la
primera columna, se debe activar el índice Nom en
la propiedad Order del cursor de la tabla Cli.
5
Ancho de las columnas
ListBox y ComboBox, volvemos a decir, son
controles. Esto significa que no contienen
objetos Column.
Cómo lograr, entonces, un ancho adecuado de las
columnas que forman las opciones?
Se usa la propiedad ColumnWidths, que es un
listado de anchos, uno por columna, separados por
comas.
Si queremos que una columna sea invisible, su
ancho debe ser 0. Esto no significa que esa
columna no exista.
6
Sincronización entre opciones y registros
Cuando las opciones se generan a partir de campos
de una tabla, cada vez que se elige una opción en
tiempo de ejecución, VFP selecciona el registro
que le da origen, produciendo un salto del
puntero de registros.
Esta sincronía entre desplazamiento por la lista
de opciones y desplazamiento por los registros de
la tabla sirve para manejar un Grid subordinado.
Hemos visto ejemplos de un Grid1 independiente y
un Grid2 subordinado a la tabla de Grid1.
Cambiando de registro en Grid1 se producía el
efecto de subordinación en Grid2.
También hemos visto una tabla independiente cuyos
campos se mostraban en TextBoxes y un Grid que
mostraba otra tabla, subordinado a la primera.
Para cambiar de registro en la tabla
independiente usamos botones de navegación. Al
cambiar de registro, se producía el efecto de
subordinación.
7
Ahora podemos lograr una nueva forma de cambiar
de registro en la tabla independiente, usando un
ListBox o un ComboBox.
Necesitaremos un ListBox (o ComboBox) y un Grid
subordinado. El ListBox mostrará la tabla
independiente.
Al cambiar de opción en el ListBox (o ComboBox),
por la sincronización estaremos cambiando de
registro en la tabla independiente.
El cambio de registro en la tabla independiente
produce que cambien los registros que muestra el
Grid subordinado.
Observen que no hemos usado la propiedad
ControlSource del ListBox o ComboBox.
8
Uso de ControlSource
Será posible guardar la opción elegida en el
campo de una tabla?
Sí es posible, con algunas precauciones.
Si la opción tiene varias columnas, hay que
indicar cuál columna de la opción se va a guardar
en ControlSource. Para ello se usa la propiedad
BoundColumn, cuyo valor por defecto es 1.
Sea un ListBox (o ComboBox) cuyas opciones están
construidas con los campos Nombre, Domicilio y
Código de cliente de la tabla Cli, es decir,
RowSourceType 6 Campos y RowSource
cli.nom,dom,cli.
Si se quiere guardar el domicilio, BoundColumn
deberá ser 2.
Si se quiere guardar el código de cliente,
BoundColumn deberá ser 3.
9
VFP arma en memoria una matriz con las opciones
del ListBox o ComboBox, sean éstas introducidas
manualmente o a partir de una tabla.
Esa matriz tiene tantas filas como opciones y
tantas columnas como se define en ColumnCount.
Esto hace que, cuando ControlSource sea un campo
numérico, por defecto VFP guarde el número de
fila de la matriz, no el valor que vemos en la
opción.
Como esto no es lo que normalmente queremos,
porque lo normal es guardar el número que vemos
en la opción, no el número de la fila, hay que
corregir la propiedad BoundTo.
Si BoundTo es .F., se guarda el número de fila.
Si BoundTo es .T., se guarda el valor que vemos
en la opción.
10
Si las opciones del ListBox o ComboBox se
originan a partir de una tabla, el campo indicado
en ControlSource nunca es un campo de la tabla
que origina las opciones. Debe ser el campo de
otra tabla.
La restricción anterior se entiende con un
ejemplo.
Asemejemos la tabla a la guía telefónica, con las
columnas nombre, domicilio y teléfono de los
abonados.
Sea que necesitamos completar un formulario de
socios con sus teléfonos.
Al procesar cada formulario, buscamos el nombre
del socio en la guía telefónica. Si lo
encontramos, trascribimos el teléfono al
formulario.
No trascribimos el teléfono a la guía, porque ya
está ahí.
El formulario de socios ejemplifica la otra
tabla. El lugar donde transcribimos el teléfono
es similar al campo declarado como ControlSource.
11
Cuando se usa ControlSource, el comportamiento de
ListBox y ComboBox es similar a como actúa la
función BuscarV de Excel.
En BuscarV hace falta un valor a buscar en una
matriz, la matriz y el lugar donde depositar el
resultado.
La matriz está formada por opciones dispuestas en
filas. Cada opción está formada por dos o más
columnas.
El valor a buscar se escribe en una celda. Excel
busca el correspondiente en la primera columna de
la matriz. Cuando lo encuentra, devuelve el valor
que está en la columna 2, 3, etc., según expresa
el indicador de columna. El valor devuelto se
guarda en la celda que tiene la función BuscarV.
En ListBox y ComboBox, el valor a buscar se toma
en el ejemplo del formulario de socios, pero
puede ser el valor de un campo. La matriz donde
se busca es la lista de opciones. La búsqueda se
hace por la primera columna. Cuando se encuentra
la opción deseada y se la elige, VFP devuelve el
valor que está en la columna 2, 3, etc., según
indica BoundColumn. El valor devuelto se guarda
en el campo indicado en ControlSource.
Write a Comment
User Comments (0)
About PowerShow.com