Matrices de miembros y objetos
Puede definir miembros de clases como matrices. En el ejemplo siguiente, choices
es una matriz de controles:
DEFINE CLASS MoverListBox AS CONTAINER
DIMENSION choices[3]
ADD OBJECT lstFromListBox AS LISTBOX
ADD OBJECT lstToListBox AS LISTBOX
ADD OBJECT choices[1] AS COMMANDBUTTON
ADD OBJECT choices[2] AS COMMANDBUTTON
ADD OBJECT choices[3] AS CHECKBOX
PROCEDURE choices.CLICK
PARAMETER nIndex
DO CASE
CASE nIndex = 1
* code
CASE nIndex = 2
* code
CASE nIndex = 3
* code
ENDCASE
ENDPROC
ENDDEFINE
Cuando un usuario hace clic en un control incluido en una matriz de controles, Visual FoxPro transfiere el número de índice del control al procedimiento de evento Click. En este procedimiento, puede utilizar una instrucción CASE para ejecutar código distinto según el botón en el que se haya hecho clic.
Crear matrices de objetos
También puede crear matrices de objetos. Por ejemplo, MyArray
contiene cinco botones de comando:
DIMENSION MyArray[5]
FOR x = 1 TO 5
MyArray[x] = CREATEOBJECT("COMMANDBUTTON")
ENDFOR
Hay una serie de consideraciones que conviene tener en cuenta con respecto a las matrices de objetos:
No se puede asignar un objeto a una matriz completa mediante un comando. Es necesario asignar individualmente el objeto a cada miembro de la matriz.
No se puede asignar un valor a una propiedad de una matriz completa. El comando siguiente produciría un error:
MyArray.Enabled = .F.
Al redimensionar una matriz de objetos para que sea más grande que la matriz original, los elementos nuevos se inicializarán como falso (.F.), como ocurre con todas las matrices de Visual FoxPro. Cuando redimensione una matriz de objetos para que sea más pequeña que la matriz original, se liberarán los objetos cuyo subíndice sea mayor que el mayor subíndice nuevo.
Vea también
Escribir definiciones de clases mediante programación | Crear una referencia de objeto | Almacenamiento de datos con objetos | Integración de objetos y datos | Programación orientada a objetos