| **Navigation:**  [[abc library reference.htm|ABC Library Reference]] > QueryFormVisual >====== QueryFormVisual Conceptual Example {{c6h0009.jpg|C6H0009.jpg}} ====== | [[queryformvisual source files.htm|{{btn_prev_n.gif|Previous page}}]][[abc library reference.htm|{{btn_home_n.gif|Return to chapter overview}}]][[queryformvisual properties.htm|{{btn_next_n.gif|Next page}}]] | | || The following example shows a typical sequence of statements to declare, instantiate, initialize, use, and terminate a QueryFormVisual object and related objects. The example plugs a QueryFormClass into a BrowseClass object. The QueryFormClass object uses the QueryFormVisual to solicit query criteria (search values) from the end user. Note that the QueryVisualClass and BrowseClass objects internally handle the normal events surrounding the query. ** PROGRAM** **_ABCDllMode_ EQUATE(0)** **_ABCLinkMode_ EQUATE(1)** ** INCLUDE('ABWINDOW.INC')** ** INCLUDE('ABBROWSE.INC')** ** INCLUDE('ABQUERY.INC')** **   MAP** **   END** **GlobalErrors  ErrorClass** **Access:Customer CLASS(FileManager)** **Init             PROCEDURE** **                END** **Relate:Customer CLASS(RelationManager)** **Init             PROCEDURE** **Kill             PROCEDURE,VIRTUAL** **                END** **GlobalRequest  BYTE(0),THREAD** **GlobalResponse BYTE(0),THREAD** **VCRRequest     LONG(0),THREAD** **Customer      FILE,DRIVER('TOPSPEED'),PRE(CUS),CREATE,THREAD** **CustomerIDKey KEY(CUS:ID),NOCASE,OPT,PRIMARY** **NameKey       KEY(CUS:LastName),NOCASE,OPT** **Record         RECORD,PRE()** **ID              LONG** **LastName        STRING(20)** **FirstName       STRING(15)** **City            STRING(20)** **State           STRING(2)** **ZIP             STRING(10)** **               END** **              END** **CustView  VIEW(Customer)** **          END** **CustQ        QUEUE** **CUS:LastName  LIKE(CUS:LastName)** **CUS:FirstName LIKE(CUS:FirstName)** **CUS:ZIP       LIKE(CUS:ZIP)** **ViewPosition  STRING(1024)** **             END** **CusWindow WINDOW('Browse Customers'),AT(,,210,105),IMM,SYSTEM,GRAY** **        LIST,AT(5,5,200,80),USE(?CusList),IMM,HVSCROLL,FROM(CustQ),|** **        FORMAT('80L(2)|M~Last~@s20@64L(2)|M~First~@s15@44L(2)|M~ZIP~@s10@')** **        BUTTON('&Query'),AT(50,88),USE(?Query)** **        BUTTON('Close'),AT(90,88),USE(?Close)** **          END** **ThisWindow CLASS(WindowManager)         !declare ThisWindow object** **Init      PROCEDURE(),BYTE,PROC,VIRTUAL** **Kill      PROCEDURE(),BYTE,PROC,VIRTUAL** **           END** **Query     QueryFormClass             !declare Query object** **QBEWindow QueryFormVisual            !declare QBEWindow object** **BRW1     CLASS(BrowseClass)            !declare BRW1 object** **Q         &CustQ               ** **         END** ** CODE** ** GlobalErrors.Init** ** Relate:Customer.Init** ** GlobalResponse = ThisWindow.Run()         !ThisWindow handles all events** ** Relate:Customer.Kill** ** GlobalErrors.Kill** **ThisWindow.Init  PROCEDURE()** **ReturnValue    BYTE,AUTO** ** CODE** ** ReturnValue = PARENT.Init()** ** IF ReturnValue THEN RETURN ReturnValue.** ** SELF.FirstField = ?CusList** ** SELF.VCRRequest &= VCRRequest** ** SELF.Errors &= GlobalErrors** ** SELF.AddItem(?Close,RequestCancelled)** ** Relate:Customer.Open** ** BRW1.Init(?CusList,CustQ.ViewPosition,CustView,CustQ,Relate:Customer,ThisWindow)** ** OPEN(CusWindow)** ** SELF.Opened=True** ** Query.Init(QBEWindow)                  !initialize Query object** ** BRW1.Q &= CustQ** ** BRW1.AddSortOrder(,CUS:NameKey)** ** BRW1.AddField(CUS:LastName,BRW1.Q.CUS:LastName)** ** BRW1.AddField(CUS:FirstName,BRW1.Q.CUS:FirstName)** ** BRW1.AddField(CUS:ZIP,BRW1.Q.CUS:ZIP)** ** BRW1.QueryControl = ?Query             !register Query button w/ BRW1** ** BRW1.UpdateQuery(Query)                !make each browse item Queryable** ** Query.AddItem('Cus:State','State')     !make State field Queryable too** ** SELF.SetAlerts()** ** RETURN ReturnValue** **ThisWindow.Kill PROCEDURE()** **ReturnValue    BYTE,AUTO** ** CODE** ** ReturnValue = PARENT.Kill()** ** IF ReturnValue THEN RETURN ReturnValue.** ** Relate:Customer.Close** ** RETURN ReturnValue** **Access:Customer.Init PROCEDURE** ** CODE** ** PARENT.Init(Customer,GlobalErrors)** ** SELF.FileNameValue = 'Customer'** ** SELF.Buffer &= CUS:Record** ** SELF.Create = 1** ** SELF.AddKey(CUS:CustomerIDKey,'CUS:CustomerIDKey',1)** ** SELF.AddKey(CUS:NameKey,'CUS:NameKey',0)** **Relate:Customer.Init PROCEDURE** ** CODE** ** Access:Customer.Init** ** PARENT.Init(Access:Customer,1)** **Relate:Customer.Kill PROCEDURE** ** CODE** ** Access:Customer.Kill** ** PARENT.Kill**