The information in this article applies to:
- Microsoft FoxPro for Windows, versions 2.5, 2.5a, 2.5b, 2.6
- Microsoft FoxPro for MS-DOS, versions 2.0, 2.5, 2.5a, 2.5b, 2.6
- Microsoft FoxPro for Macintosh, versions 2.5b, 2.5c
SUMMARY
To have a popup list display a diminishing number of elements, possibly
including an empty list, follow the steps shown below. (Two procedures are
given; one for FoxPro for Windows and FoxPro for Macintosh, and one for
FoxPro for MS-DOS.)
MORE INFORMATION
FoxPro for Windows or FoxPro for Macintosh
- Start FoxPro for Windows or FoxPro for Macintosh. From the File menu,
choose New, select Screen, and then choose the New button.
- From the Screen menu, choose Layout.
- Under Options, choose the Code button, choose the Screen Setup Code
button, and then choose OK twice. In the "Untitled - Setup" window, type
the following code:
SET SAFETY OFF
CREATE TABLE employee ;
(name C(20),addr C(30),city C(30),zip C(5),;
salary N(8,2),comments m)
SET SAFETY ON
INSERT INTO employee (name) VALUE ('Emp1')
INSERT INTO employee (name) VALUE ('Emp2')
INSERT INTO employee (name) VALUE ('Emp3')
INSERT INTO employee (name) VALUE ('Emp4')
INSERT INTO employee (name) VALUE ('Emp5')
SELECT name FROM employee INTO ARRAY mpoparray
mpopval='' && two single quotation marks
NOTE: The SELECT-SQL command yields the array (mpoparray) that will be
used in the list box you will define in step 6. The mpopval variable
will also be used by this list box.
When you have finished typing the code, close the "Untitled - Setup"
window.
- Click the Button tool, and create a button set with two prompts: The
first button will perform the action; the second will terminate the
READ. Name the button set variable mtest.
- Enter the following code as a procedure in the VALID code snippet of the
button set:
IF mtest=1
SHOW GETS
ELSE
CLEAR READ
ENDIF
- Click the List Box tool. In the List dialog box, type "mpoparray"
(without the quotation marks) in the From Array box, and then assign the
list box the variable name mpopval.
- Under Clauses, choose the "# Of Elements" button. In the resulting
dialog box, select Expression, and then type the following:
_TALLY
- From the Screen menu, choose Layout, choose the Code button, and then
choose the "On Refresh (Show Gets)" button. In the resulting dialog box,
enter the following code as a procedure:
IF NOT EMPTY(mpopval)
DELETE FOR name=mpopval
* If you are designing a network application, the SELECT-SQL
* should be modified as below so that the PACK is NOT necessary.
PACK
ENDIF
SELECT name FROM employee INTO ARRAY mpoparray
* The following variant might be used in a multiuser application:
SELECT name FROM employee ;
INTO ARRAY mpoparray WHERE NOT DELETED()
This code will prevent you from seeing any extraneous data. For example,
when the last array element is deleted, a .F. might appear in the list;
this code fragment prevents this from happening.
FoxPro for MS-DOS
- Start FoxPro for MS-DOS. From the File menu, choose New, select Screen,
and then choose OK.
- From the Screen menu, choose Screen Layout.
- Under Screen Code, select Setup, and then choose OK. In the "UNTITLED
Setup" window, type the following code:
SET SAFETY OFF
CREATE TABLE employee ;
(name C(20),addr C(30),city C(30),zip C(5),;
salary N(8,2),comments m)
SET SAFETY ON
INSERT INTO employee (name) VALUE ('Emp1')
INSERT INTO employee (name) VALUE ('Emp2')
INSERT INTO employee (name) VALUE ('Emp3')
INSERT INTO employee (name) VALUE ('Emp4')
INSERT INTO employee (name) VALUE ('Emp5')
SELECT name FROM employee INTO ARRAY mpoparray
mpopval='' && two single quotation marks
NOTE: The SELECT-SQL command yields the array (mpoparray) that will be
used in the popup you will define in step 6. The mpopval variable will
also be used by this popup.
When you have finished typing the code, close the "UNTITLED Setup"
window.
- From the Screen menu, choose Push Button. Create a button set with two
prompts: The first button will perform the action; the second will
terminate the READ. Name the button set variable mtest.
- Enter the following code as a procedure in the VALID code snippet of the
button set:
IF mtest=1
SHOW GETS
ELSE
CLEAR READ
ENDIF
- From the Screen menu, choose Popup, select Array Popup, and then type
"mpoparray" in the Array Popup box.
- Assign the popup the variable name mpopval, and then select the "#
Elements" box under Options. In the resulting dialog box, select
Expression, and then type the following:
_TALLY
- From the Screen menu, choose Screen Layout. Under READ Clauses, select
Show. In the resulting dialog box, enter the following code as a
procedure:
IF NOT EMPTY(mpopval)
DELETE FOR name=mpopval
* If you are designing a network application, the SELECT-SQL
* should be modified as below so that the PACK is NOT necessary.
PACK
ENDIF
SELECT name FROM employee INTO ARRAY mpoparray
* The following variant might be used in a multiuser application:
SELECT name FROM employee ;
INTO ARRAY mpoparray WHERE NOT DELETED()
This code will prevent you from seeing any extraneous data. For example,
when the last array element is deleted, a .F. might appear in the list;
this code fragment prevents this from happening.
REFERENCES
Information and code provided by John W. Stepp.
|