How to Use the Caption Fields of a Table in a Form

This article was previously published under Q130997
This article has been archived. It is offered "as is" and will no longer be updated.
Visual FoxPro's database offers some nice enhancements for developers. Onesuch enhancement is the ability to use a table's caption property to holdthe name of a field. Then you can reference the field caption property byusing DBGETPROP to display the field description or name in a label on aform instead of having to enter this information manually in the captionproperty of the label.
The premise behind this concept is this: Each field in a table has anassociated caption property. This caption property can hold whatever textyou would like to put in it, including the English text describing ornaming the field.

Sample Code

The following code demonstrates the behavior outlined in this article. Thecode has been documented so you can follow along when it executes.
**========================================================**** Program name: CAPTEST                                  **** Purpose     : This program demonstrates how to pro-    ****               gramatically use the caption property of ****               a field in a table                       ****========================================================**SET SAFETY OFFCLOSE ALLCLEARCREATE DATABASE captestCREATE TABLE cust (Cust_ID C(5), Cust_Name C(20))INSERT INTO cust (Cust_ID, Cust_Name) Values ("00001","Acme Inc")CLOSE ALLOPEN DATABASE captestUSE cust**--------------------------------------------------------**** This code is setting the caption property for the 2    **** fields in the cust table.                              ****--------------------------------------------------------**=DBSETPROP("Cust.Cust_ID","FIELD","CAPTION","Customer ID")=DBSETPROP("Cust.Cust_Name","FIELD","CAPTION","Customer Name")**--------------------------------------------------------**** This block of code creates the form for the display.   ****--------------------------------------------------------**frmMyForm = CREATEOBJECT('Form')frmMyForm.Width      = 450frmMyForm.Height     = 100frmMyForm.Caption    = "Caption Test"frmMyForm.AutoCenter =.T.**-------------------------------------------------------**** This code adds the label and text box objects for the **** customer id information.                              ****-------------------------------------------------------**frmMyForm.AddObject('lblCustID','lblCust_ID')frmMyForm.AddObject('fldCustID','fldCust_ID')**-------------------------------------------------------**** This code adds the label and text box objects for the **** customer name information.                            ****-------------------------------------------------------**frmMyForm.AddObject('lblCustName','lblCust_Name')frmMyForm.AddObject('fldCustName','fldCust_Name')**-------------------------------------------------------**** Add a quit button                                     ****-------------------------------------------------------**frmMyForm.AddObject('cmdQuit','cmdQuitButton')frmMyForm.SHOW                   && Display the formREAD EVENTS                      && Start event processingCLOSE ALLERASE Cust.dbfERASE Captest.dbcERASE Captest.dbtSET SAFETY ON**-------------------------------------------------------**** This is the class definition for the customer ID in-  **** formation. The caption for the label should be de-    **** rived from the table itself. This is the example re-  **** ferred to in the article. The name of the field and   **** its definition are stored together in the table. This **** way, if you decide to change the name of the field in **** the table, you can also just change the caption while **** you're there and that change will be reflected on your**** form.                                                 ****-------------------------------------------------------**DEFINE CLASS lblCust_ID as label  Width   = 80  Left    = 10  Top     = 22  Visible = .T.  Caption = DBGETPROP("Cust.Cust_id","FIELD","CAPTION")ENDDEFINEDEFINE CLASS fldCust_ID as textbox  Visible = .T.  Left    = 100  Top     = 20  Width   = 20  ControlSource=Cust.Cust_IDENDDEFINE**-------------------------------------------------------**** Class definition for the customer name information.   ****-------------------------------------------------------**DEFINE CLASS lblCust_Name as label  Width   = 100  Left    = 140  Top     = 22  Visible = .T.  Caption = DBGETPROP("Cust.Cust_Name","FIELD","CAPTION")ENDDEFINEDEFINE CLASS fldCust_Name as textbox  Visible = .T.  Left    = 260  Top     = 20  Width   = 140  ControlSource=Cust.Cust_NameENDDEFINEDEFINE CLASS cmdQuitButton AS CommandButton  && Create command button    Caption = '\<Quit'       && Caption on the command button    Cancel  = .T.            && Default Cancel command button (Esc)    Left    = 175            && Command button column    Top     = 60             && Command button row    Height  = 25             && Command button height    Visible = .T.    PROCEDURE Click      CLEAR EVENTS           && Stop event processing, close FormENDDEFINE				
VFoxWin Caption DBC

Article ID: 130997 - Last Review: 02/23/2014 01:05:32 - Revision: 1.1

  • Microsoft Visual FoxPro 3.0 Standard Edition
  • kbnosurvey kbarchive kbcode KB130997