Adding a checkbox to a Visual Foxpro grid
By default, a Visual FoxPro grid holds a textbox in each column.
Each column in a grid is a container and can hold any other control. It can hold a container
container control such as a pageframe and can even be used to hold another grid. These are extreme
examples, a simple more useful example is to replace the textbox with a checkbox as shown in
the screenshot here.
The technique to replace the textbox with another control is a
simple one, but it's not at all obvious. The first step is to delete the textbox but the problem
is that you seem to have no way of selecting the textbox on screen.
The column is a VFP container inside the grid container but neither a click nor a right-click lets
you drilldown from one to the other. The trick is to use the list of controls in the Properties
Window to make that selection:
- Right-click on the grid.
- Select to allow selections within the grid.
-
Click on the checkbox in the Form Controls toolbox - but see the
note about custom controls in the next paragraph.
- Move the mouse and click on the column in the grid.
-
Nothing will change on screen - the column will still appear to hold
a textbox and you are still unable to select it.
-
Go to the Properties Window and look at the controls within that column.
-
You should now see that the column holds two controls, the original textbox
and the new checkbox.
-
Click on the textbox to select it.
-
Now click on the form. Be careful. Click on the header of the form
rather than on any control within the form. You have just selected the
textbox in the Properties Window and you do not want to change that
selection by clicking on the body of the form or on any control within
the form.
- Press the Delete key.
-
The textbox should disappear from the grid to show the checkbox that has been hiding
behind it.
Adding a control from a custom library
When you are adding controls to a form you have the options of
clicking on the Form Controls toolbar or of dragging a control from a
class library on the Classes tab of the Project Manager. This second
option does not work when you are trying to add a control to a grid. You
have to put the control you want onto the Form Controls toolbar.Use the
technique described here to add
custom controls
to the toolbar.
Aligning the checkbox
By default the checkbox will appear against the left-hand edge of
the column. This is usually wrong and if you want to see it in another
position then the grid in VFP 9 has a new property which lets you set the
alignment of the control in the column.
In earlier versions the workaround is to create a container class,
centre the checkbox manually inside this container and then add the
container to the column. The container itself will be left-justified in the column but
if the container is made transparent and borderless then the
checkbox will appear to be centred in the column.
Highlighting the selected rows
In this example the customer wanted a really clear way of seeing
which entries had been selected. The grid's
property allowed me to grey out those rows which were not
selected.
|