Elegir un tipo de datos para un cuadro de lista o cuadro combinado
La propiedad RowSourceType determina qué tipo de origen llena el cuadro de lista o el cuadro combinado, por ejemplo, una matriz o una tabla. Una vez establecida la propiedad RowSourceType, especifique el origen de los elementos de la lista, establezciendo la propiedad RowSource.
RowSourceType | Origen de los elementos de lista |
---|---|
0 | Ninguno. Agrega elementos a la lista mediante programación. |
1 | Valor |
2 | Alias |
3 | Instrucción SQL |
4 | Consulta (.qpr) |
5 | Matriz |
6 | Campos |
7 | Archivos |
8 | Estructura |
9 | Emergente. Se incluye por compatibilidad con versiones anteriores. |
Las secciones siguientes describen los distintos valores de RowSourceType.
Nota Si establece la propiedad RowSourceType en 0, el valor predeterminado, la lista no se llenará automáticamente. Puede agregar elementos a la lista mediante el método AddItem:
frmForm1.lstMyList.RowSourceType = 0
frmForm1.lstMyList.AddItem("First Item")
frmForm1.lstMyList.AddItem("Second Item")
frmForm1.lstMyList.AddItem("Third Item")
El método RemoveItem permite quitar elementos de la lista. Por ejemplo, la línea de código siguiente quita “Second Item” de la lista:
frmForm1.lstMyList.RemoveItem(2)
Valor Si establece la propiedad RowSourceType a 1, podrá especificar múltiples valores en la propiedad RowSource que se mostrarán en la lista. Si establece la propiedad RowSource a través de la ventana Propiedades, incluya una lista de elementos delimitados por comas. Si establece RowSource mediante programación, incluya entre comillas la lista delimitada por comas:
Form1.lstMyList.RowSourceType = 1
Form1.lstMyList.RowSource = "one,two,three,four"
Alias Si establece la propiedad RowSourceType a 2, podrá incluir valores de uno o más campos de una tabla abierta.
Si la propiedad ColumnCount es 0 ó 1, la lista mostrará valores del primer campo de la tabla. Si establece la propiedad ColumnCount como 3, la lista mostrará valores de los tres primeros campos de la tabla. Para mostrar campos en un orden distinto del que tienen en la tabla, establezca la propiedad RowSourceType como 3 –Instrucción SQL o 6 – Campos.
Nota Si RowSourceType es 2 – Alias o 6 – Campos, cuando el usuario elige un nuevo valor de la lista, el puntero de registro de la tabla se mueve al registro que contiene el valor del elemento elegido.
Instrucción SQL Si establece la propiedad RowSourceType a 3 – Instrucción SQL, incluya una instrucción SELECT - SQL en la propiedad RowSource. Por ejemplo, la instrucción siguiente selecciona todos los campos y todos los registros de la tabla Customer en un cursor:
SELECT * FROM Customer INTO CURSOR mylist
Si establece RowSource mediante programación, no olvide incluir la instrucción SELECT entre comillas.
Nota De forma predeterminada, las instrucciones SELECT de Visual FoxPro sin cláusulas INTO muestran inmediatamente el cursor resultante en una ventana Examinar. Puesto que este comportamiento no suele ser conveniente en una instrucción SQL de RowSource, incluya una cláusula INTO CURSOR en la instrucción SELECT.
Consulta Si establece la propiedad RowSourceType a 4, podrá llenar el cuadro de lista con los resultados de una consulta diseñada en el Diseñador de consultas. Cuando RowSourceType está establecida a 4, establezca RowSource en el archivo .qpr. Por ejemplo, la línea de código siguiente establece la propiedad RowSource de una lista en una consulta.
THISFORM.List1.RowSource = "region.qpr"
Si no especifica una extensión de archivo, Visual FoxPro adoptará la extensión .qpr.
Matriz Si establece la propiedad RowSourceType en 5, la lista se llenará con los elementos de una matriz. Puede crear una propiedad de matriz del formulario o el conjunto de formularios para RowSource o bien utilizar una matriz creada en otra parte de la aplicación.
Para obtener información acerca de la creación de propiedades de matrices, consulte Crear formularios.
Sugerencia Cuando es necesario, Visual FoxPro evalúa el valor de RowSource de una lista en la aplicación, no sólo en el método en que se establece la propiedad RowSource. Debe tener en cuenta este alcance. Si crea una matriz local en un método, esa matriz tendrá como alcance el método y no estará disponible en todos los casos en que Visual FoxPro necesite evaluar el valor de la propiedad. Si establece la propiedad RowSource de una lista como una propiedad de matriz del formulario o el conjunto de formularios, deberá hacer referencia a la propiedad en relación a la lista, no en relación al método en el que se ha establecido la propiedad. Por ejemplo, si tiene una propiedad de matriz de formulario llamada
arrayprop
, las líneas de código siguientes del Init del formulario producirán resultados distintos:
THIS.lst1.RowSource = "THIS.arrayprop" && Error
THIS.lst1.RowSource = "THISFORM.arrayprop" && No error.
Para llenar una lista con los elementos de una matriz multidimensional
- Establezca la propiedad RowSourceType a 5.
- Establezca la propiedad RowSource a la matriz multidimensional.
- Establezca la propiedad ColumnCount al número de columnas que desea mostrar.
- Establezca la propiedad ColumnWidths a los anchos deseados para cada columna.
Campos Si establece la propiedad RowSourceType en 6, puede especificar un campo o una lista de campos delimitados por comas para llenar la lista, como:
contact,company,location
Puede incluir los siguientes tipos de información en la propiedad RowSource de una lista cuya propiedad RowSourceType tenga el valor 6–Campos:
- campo
- alias.campo
- alias.campo, campo, campo, ...
Si en la lista desea incluir campos de múltiples tablas, establezca la propiedad RowSourceType como 3–Instrucción SQL.
A diferencia de un valor RowSourceType de 2 – Alias, un valor RowSourceType de 6 – Campos permite mostrar campos independientemente de sus posiciones reales en la tabla.
Archivos Si establece la propiedad RowSourceType en 7, la lista se llenará con los archivos del directorio actual. Además, las opciones de la lista permiten elegir una unidad y un directorio distintos para los nombres de archivos que se muestran en la lista.
Establezca RowSource como la estructura del tipo de archivos que desea mostrar en la lista. Por ejemplo, para mostrar tablas de Visual FoxPro en la lista, establezca la propiedad RowSource como *.dbf.
Estructura Si establece la propiedad RowSourceType en 8, la lista se llenará con los campos de la tabla que especifique al establecer la propiedad RowSource. Este valor de RowSourceType resulta útil para presentar al usuario una lista de campos en la que buscar valores o una lista de campos por la que ordenar una tabla.
Emergente Si establece la propiedad RowSourceType en 9, podrá llenar una lista a partir de un emergente definido anteriormente. Esta opción se incluye por compatibilidad con versiones anteriores.
Vea también
Aplicación de cuadros de lista y cuadros de lista desplegables | Crear cuadros de lista de múltiples columnas | Usar controles | Controles y objetos | RowSourceType | RowSource