Compartir a través de


Definir un control Grid

Una cuadrícula contiene columnas que, a su vez, pueden contener encabezados y cualquier otro control. El control predeterminado contenido en una columna es un cuadro de texto, por lo que la funcionalidad predeterminada de la cuadrícula se aproxima a una ventana Examinar. Sin embargo, la arquitectura subyacente de la cuadrícula la abre hasta una extensión ilimitada.

El ejemplo siguiente crea un formulario que contiene un objeto Grid con dos columnas. La segunda columna contiene una casilla de verificación para mostrar los valores en un campo lógico de una tabla.

Control Grid con una casilla de verificación en una columna

Definición de una clase de cuadrícula con una casilla de verificación en una columna de cuadrícula

Código Comentarios
DEFINE CLASS grdProducts AS Grid
   Left = 24
   Top = 10
   Width = 295
   Height = 210
   Visible = .T.
   RowHeight = 28
   ColumnCount = 2
Comienza la definición de clase y establece las propiedades que determinan la apariencia de la cuadrícula.

Al establecer la propiedad ColumnCount en 2, se agregan dos columnas a la cuadrícula. Cada columna contiene un encabezado con el nombre Header1. Además, cada columna tiene un grupo de propiedades independiente que determina su apariencia y comportamiento.
Column1.ControlSource ="prod_name"
Column2.ControlSource ="discontinu"
Al establecer la propiedad ControlSource de una columna, la columna muestra los valores de ese campo para todos los registros de la tabla.
Discontinu es un campo lógico.
Column2.Sparse = .F.
Column2 contendrá la casilla de verificación. Establezca la propiedad Sparse de la columna en .F. de modo que la casilla de verificación sea visible en todas las filas, no sólo en la celda seleccionada.
Procedure Init
   THIS.Column1.Width = 175
   THIS.Column2.Width = 68
   THIS.Column1.Header1.Caption = ;
      "Product Name"
   THIS.Column2.Header1.Caption = ;
      "Discontinued"
   THIS.Column2.AddObject("chk1", ;
      "checkbox")
   THIS.Column2.CurrentControl = ;
      "chk1"
   THIS.Column2.chk1.Visible = .T.
   THIS.Column2.chk1.Caption = ""
ENDPROC
Establece el ancho de las columnas y los títulos de los encabezados.







El método AddObject permite agregar un objeto a un contenedor ; en este caso, una casilla de verificación llamada chk1.
Establece la propiedad CurrentControl de la columna en la casilla de verificación, de modo que se muestre la casilla de verificación.
Comprueba que la casilla de verificación es visible.
Establece el título en una cadena vacía de modo que no se muestre el título predeterminado "chk1".
ENDDEFINE
Termina la definición de clase.

La siguiente definición de clase es el formulario que contiene la cuadrícula. Ambas definiciones de clase pueden incluirse en el mismo archivo de programa.

Definición de una clase de formulario que contiene la clase de cuadrícula

Código Comentarios
DEFINE CLASS GridForm AS FORM
   Width = 330
   Height = 250
   Caption = "Grid Example"
   ADD OBJECT grid1 AS grdProducts
Crea una clase de formulario y le agrega un objeto basado en la clase de cuadrícula.
PROCEDURE Destroy
   CLEAR EVENTS
ENDPROC
ENDDEFINE
El programa que crea un objeto basado en esta clase utilizará READ EVENTS. Al incluir CLEAR EVENTS en el evento Destroy del formulario, el programa podrá terminar cuando el usuario cierre el formulario.
Termina la definición de clase.

El programa siguiente abre la tabla donde están incluidos los campos que se van a mostrar en las columnas de cuadrícula, crea un objeto basado en la clase GridForm y ejecuta el comando READ EVENTS.

CLOSE DATABASE
OPEN DATABASE (HOME(2) + "data\testdata.dbc")
USE products
frmTest= CREATEOBJECT("GridForm")
frmTest.Show
READ EVENTS

Este programa puede incluirse en el mismo archivo en el que están incluidas las definiciones de clase si aparece al principio del archivo. También puede usar el comando SET PROCEDURE TO para especificar el programa que contiene las definiciones de clase e incluir este código en un programa distinto.

Vea también

Escribir definiciones de clases mediante programación | Crear un conjunto de botones de desplazamiento por tablas | Crear una referencia de objeto | Examinar | Propiedad Sparse | Método AddObject | CurrentControl | Programación orientada a objetos