Share via


Defining a Grid Control

A grid contains columns, which in turn can contain headers and any other control. The default control contained in a column is a text box, so that the default functionality of the grid approximates a Browse window. However, the underlying architecture of the grid opens it up to endless extensibility.

The following example creates a form that contains a Grid object with two columns. The second column contains a check box to display the values in a logical field in a table.

Grid control with a check box in one column

FoxProGridExample screenshot

Definition of a Grid Class with a Check Box in a Grid Column

Code

Comments

DEFINE CLASS grdProducts AS Grid

Left = 24

Top = 10

Width = 295

Height = 210

Visible = .T.

RowHeight = 28

ColumnCount = 2

Start the class definition and set properties that determine the grid appearance. When you set the ColumnCount property to 2, you add two columns to the grid. Each column contains a header with the name Header1. In addition, each column has an independent group of properties that determines its appearance and behavior.

Column1.ControlSource ="prod_name"

Column2.ControlSource ="discontinu"

When you set the ControlSource of a column, the column displays that field's values for all the records in the table.Discontinu is a logical field.

Column2.Sparse = .F.

Column2 will contain the check box. Set the column's Sparse property to .F. so that the check box will be visible in all rows, not just in the selected cell.

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

Set column widths and header captions. The AddObject method allows you to add an object to a container — in this case, a check box named chk1. Set the CurrentControl of the column to the check box so that the check box will be displayed. Make sure that the check box is visible. Set the caption to an empty string so that the default caption "chk1" won't be displayed.

ENDDEFINE

End of the class definition.

The following class definition is the form that contains the grid. Both class definitions can be included in the same program file.

Definition of a Form Class that Contains the Grid Class

Code

Comments

DEFINE CLASS GridForm AS FORM

Width = 330

Height = 250

Caption = "Grid Example"

ADD OBJECT grid1 AS grdProducts

Create a form class and add an object, based on the grid class, to it.

PROCEDURE Destroy

CLEAR EVENTS

ENDPROC

ENDDEFINE

The program that creates an object based on this class will use READ EVENTS. Including CLEAR EVENTS in the Destroy event of the form allows the program to finish running when the user closes the form. End of the class definition.

The following program opens the table with the fields to be displayed in the grid columns, creates an object based on the GridForm class, and issues the READ EVENTS command:

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

This program can be included in the same file with the class definitions if it comes at the beginning of the file. You could also use the SET PROCEDURE TO command to specify the program with the class definitions and include this code in a separate program.

See Also

Tasks

How to: Create Classes and Subclasses

Concepts

Creating Table Navigation Buttons

Object Reference Creation

Reference

Browse Window

Sparse Property

AddObject Method

SYS(18) - Current Control

Other Resources

Object-Oriented Programming