5 |
The LA Fox Developer Newsletter
|
January
1998
|
[Ed. Note: Nick Neklioudov is a Fox (“all-kinds-of”) programmer for last 11 years and lives in Halifax, Nova Scotia. As CNA, Nick also provides network implementation and support, as well as different kinds of computer consulting, support and troubleshooting tasks. He is currently working on contract basis.]
I believe all of us are familiar with that set of four navigational buttons “First”, “Prior”, “Next”, “Last” we use for data entry or maintenance forms. You need to put some code in their Click() events, enable or disable navigation buttons, according to the position of record pointer in a table. Of course, usually all we do it only once, and save this commandgroup as a class for reuse. I would like to suggest another approach for VFP 5.0 which eliminates the need in that commandgroup at all.
Everybody knows, that we can put any control into a grid cell, but maybe not everybody realizes that it is possible to put there also any container, even the whole form, which gives us some extra opportunities.
I created this sample after discussion about “Scrolling grid” in the thread, started by Jon Paskett on UT this January.
This example contains pageframe, placed into a grid cell instead of default textbox. The pageframe contains 3 pages with all necessary controls and should be saved as class in a class library.
Say, we use EMPLOYEE.DBF from Tasmanian Traders sample as our data source. Our pageframe has Height
=
300 and Width
=
400
,
so we create a form, with a grid of 1 column, then drop our new pageframe class into grid’s column, set CurrentControl for the Columni to the pageframe and remove default
textbox.
Also we have to make sure that grid properties are set to:
ColumnCount
=
I
|
DeleteMark= .F
GridLines
=
0
HeaderHeight
=
0.
Height 300
HighlightRow= .F.
RecordMark
=
.F.
RecordSource
=
“employee”
RowHeight
=
300
ScrollBars
=
2
Width
=
400
Column 1 .Width
=
400
Column 1 .Sparse
=
.F.
The trick is that now the grid cell has the exact size of the pageframe.
After those settings we run our form and see the pageframe, which has a vertical scrollbar on the right side. We can use this scroilbar to navigate through our data source like we do it with a text
in
MS Word. Note, that the record shown in the pageframe is not the current record in our data source until we actually click anywhere on the pageframe or any of its controls. Only after that record pointer actually moves.
So, in this case we have no need in any code we previously used in our navigational commandgroup.
This approach “as is” may be used for forms, which works directly with tables or views, and use APPEND BLANK for adding records, or, for any forms which are used just to represent data.
Sometimes, when you open this form in Form Designer again, after adding pageframe to the grid, it can give you an error message “Error loading file
record number X - Pageframel (or one of its members). : Pageframe cannot be sized that small”, despite of the fact, that pageframe instance in the grid column has size 300 x 400 pixels. I opened my form’s .SCX file by USE MYFORM.SCX and found, that by unknown reasons there are no Width and Height properties defined in Properties field for the record containing information about the pageframe. It never happened, when I was experimenting in VFP 3.0. To fix that, it is enough just to add to Property field manually:
Height = 300
Width = 400
By the way, I would not recommend this kind of grid for VFP 3.0, because it seems to work differently there, and give strange visual effects, but for VFP 5.0, it works just fine, as far as I tested it. I would be glad to get any feedback about any problems regarding this approach.
(Nick can be reached atad587@chebucto.ns.ca.]
|
Page
5
|
5 |