VXFORM1 4vxBase Sample Application: Aircraft Brokerage System Form1 Picture1 DDDK0 DKDK0 DKDK0 Label1 vxBase Sample Application Tms Rmn FileMenu &File OpenTypes &Types OpenCust &Customers OpenAircraft &Aircraft SepBar ExitCode LinkMenu &Link LinkBuyToSell &Buyer to Sellers LinkSellToBuy &Seller to Buyers MaintMenu &Maintenance PackFiles &Pack TestMenu &Test TestCreate &Create TestCopy Copy &Structure TestDataCopy Copy &Data FileStruc &File Structure RecStruc &Record Structure UMenu &User Browse Menus ExitCode_Click VXFORM1 Form_Unload Cancel CanClose Form2Activew FALSE Form3Active Form4Active Form5Active Form6Active Form7ActiveL AircraftDbfo vxUseDbf= Aircraf1Ntx~ vxUseNtx[ Aircraf2Ntx AirbuyerDbfi Airbuy1Ntx Airbuy2Ntx vxCloseAll vxCtlGrayReset# vxDeallocate OpenTypes_Click TypesOpenb BrowseTypes OpenCust_Click AircustDbf Aircust1Ntx Aircust2Ntx Aircust3Ntx5 vxTableDeclare VX_BLUEP vxTableFieldj VX_FIELD& StatesOpen vxSelectDbfS vxSelectNtx BrowseCust OpenAircraft_Click AircraftOpenH BrowseAirx LinkBuyToSell_Click7 VX_EXPR vxClose VX_RED vxJoinU OpenCust Enabled LinkBuyToSell LinkSellToBuy PackFiles= vxBrowse hWndq BuyerReturn LinkSellToBuy_Click AircraftReturnr TestCreate_Click TypeFile FileStruc NumFieldsF NewRet OpenTypes TestCreate TestCopy. TestDataCopy Fld01 Fld02 vxCreateDbf) TypeDbf TypeNtx vxCreateNtx vxAppendFrom PackFiles_Click vxAreaDbfa AirtypesDbf AirtypesNtx: vxPack TestCopy_Click NtxExpr vxNtxExprH vxCopyStrucQ TestDataCopy_Click vxCopy^ StartRec EndRecQ vxDeleteRange vxUnlock NtxName vxNtxName FileStruc_Click VXFORM7+ Form_Paint vxFormFrame Form_Click OpenAircraft RecStruc_Click VXFORM8 UMenu_Click vxMenuDeclare: vxMenuItem VX_MENUHEAD VX_RETURN VX_SEPBAR vxBrowsePos TypeReturn UMenu vxCtlGraySet LinkMenu_Click ExitCode_Click The master form VXFORM1 is unloaded.- The Form_Unload procedure does thed final cleanup.d Form_Unload This routine is activated from either the Exit menu item on VXFORM1 or by selecting the Close item from the system menu.c We MUST test the vxCloseAll result in case there are any active browse windowsg that require closure before we cani terminate the application If the close operation is successful, any open databases FOR THIS TASK are closed (which updates the database header information) and all attached memory objects (Tables and Joins)- are released. if any of our other forms are active, we- cannot close this form and exit the app Sub forms must be closed first redraw top level form NOTE: we cannot use the FORM.Visible property to- check if any forms are active because as soon as- we reference a form, it gets loaded - and our app will stall with No Database messages because as soon as the form is loaded, the database attached to that form is referencedd test vxcloseall with some files open- \vb\vxbtest\aircraft.dbf \vb\vxbtest\aircraf1.ntx \vb\vxbtest\aircraf2.ntx \vb\vxbtest\airbuyer.dbf \vb\vxbtest\airbuy1.ntx" \vb\vxbtest\airbuy2.ntx" redraw top level form if this is master vxbase task and other vxbase tasks are active then we can't exite Exit Sub reset system disabled color OpenTypes_Click in VXBMOD.BAS start browse tableS in module file VXBMOD.BAS OpenCust_Click open brokerage customers file \vb\vxbtest\aircust.dbf" Error Opening aircust.dbf. Aborting. \vb\vxbtest\aircust1.ntx \vb\vxbtest\aircust2.ntx \vb\vxbtest\aircust3.ntx Declare Customer Tablen a_code a_name a_city State" a_state" Res Phone" a_phoneres Bus Phone" a_phonebus open state abbreviations file in VXBMOD.BAS start browse tableS in module VXMOD.BAS OpenAircraft_Click both routines in VXBMOD.BAS LinkBuyToSell_Click Demonstration of setting up visual relationships- with the vxJoin command. What we have is a file of buyers categorized by type of aircraft they are interested in. What we are going to do is display a browse table ofi these buyer records and link any buyer record toe another browse table of aircraft that match the the buyer aircraft type field.r Conversely, the LinkSellToBuy proc does the opposite. It links the aircraft with all prospective buyers. open file that will control the join- \vb\vxbtest\airbuyer.dbf \vb\vxbtest\airbuy2.ntx" this index is on aircraft type define table to show data we are interested in- b_cat" Description" left(b_desc,20)" b_low" b_high Customer b_code now open secondary file and define its table \vb\vxbtest\aircraft.dbf Error Opening aircraft.dbf. Aborting." \vb\vxbtest\aircraf2.ntx on type c_cat" c_code Price" c_price" c_year c_ttsn reselect the master file and set up the join b_cat" Possible Sales# this joins the Aircraft file using the index selected for it to the buyer file. The "b_cat" param is the field we will use as a key into the aircraft file and the VX_FIELD item tells vxBase that it is a field and not an expression. The last item in the call is a title for the join window. disable menu items that might affect our display- now set up and execute the browse. The JOIN menu item is- automatically enabled. Buyer Details" when we return from the browse we can ignore anything vxBase sent back to us in the BuyerReturn param we could get fancy and get the customer record if the use hit enter and then display or edit it. Do whatever you like.t re-enable menu items- LinkSellToBuy_Click Browse the aircraft for sale file and join to potential buyers. See a more detailed explanantion of visual relationships in the LinkBuyToSell Proct open file that will control the join- \vb\vxbtest\aircraft.dbf Error Opening aircraft.dbf. Aborting." \vb\vxbtest\aircraf2.ntx on type define table to show data we are interested iny c_cat" Description" left(c_desc,20)" c_code Price" c_price" c_year c_ttsn now open secondary file and define its table \vb\vxbtest\airbuyer.dbf Error Opening airbuyer.dbf. Aborting." \vb\vxbtest\airbuy2.ntx" b_cat" b_low" b_high Customer b_code reselect the master file and set up the join c_cat" Possible Buyers"# this joins the buyer file using the index selected for it to the aircraft file. The "c_cat" param is the field we will use as a key into the buyer file and the VX_FIELDd item tells vxBase that it is a field and not an expression. The last item in the call is a title for the join window. disable menu items- now set up and execute the browse. The JOIN menu item is- automatically enabled. Aircraft Record Display" when we return from the browse we can ignore anything vxBase sent back to us in the BuyerReturn param re-enable menu items- TestCreate_Click 1234567890123456 (ruler to help alignment) CATEGORY C 3 0 CATNAME C 15 0 our field length for the second field is shorter- than the original file so when we appendfrom below this field should be truncated and will show as such in the browseb \vb\vxbtest\typefile.dbf Error in database creation \vb\vxbtest\typefile.dbf index create opens and selects new index and returns the index select area. Zero (FALSE) is returned if there was an error \vb\vxbtest\typefile.ntx category Error in index create" \vb\vxbtest\airtypes.dbf Error in append from New File \vb\vxbtest\typefile.dbf \vb\vxbtest\typefile.ntx PackFiles_Click removes logically deleted records and reindexes \vb\vxbtest\airtypes.dbf airtypes in use! \vb\vxbtest\airtypes.dbf \vb\vxbtest\airtypes.ntx \vb\vxbtest\aircust.dbf" aircust in use!" \vb\vxbtest\aircust.dbf" \vb\vxbtest\aircust1.ntx \vb\vxbtest\aircust2.ntx \vb\vxbtest\aircust3.ntx \vb\vxbtest\airbuyer.dbf airbuyer in use! \vb\vxbtest\airbuyer.dbf \vb\vxbtest\airbuy1.ntx" \vb\vxbtest\airbuy2.ntx" \vb\vxbtest\aircraft.dbf aircraft in use! \vb\vxbtest\aircraft.dbf \vb\vxbtest\aircraf1.ntx \vb\vxbtest\aircraf2.ntx TestCopy_Click disable items that would be affected by closure of airtypes file \vb\vxbtest\airtypes.dbf \vb\vxbtest\airtypes.ntx \vb\vxbtest\testcopy.dbf Error in database copy struc \vb\vxbtest\testcopy.dbf index create opens and selects new index and- returns the index select area. Zero (FALSE) is returned if there was an error \vb\vxbtest\testcopy.ntx Error in index create" \vb\vxbtest\airtypes.dbf Error in append from New File \vb\vxbtest\testcopy.dbf \vb\vxbtest\testcopy.ntx TestDataCopy_Click \vb\vxbtest\airtypes.dbf \vb\vxbtest\airtypes.ntx \vb\vxbtest\testdata.dbf Error in database copy \vb\vxbtest\testdata.dbf Test delete range Error in DeleteRange index create opens and selects new index and returns the index select area. Zero (FALSE) is returned if there was an error \vb\vxbtest\testdata.ntx Error in index create" test ntx name function" \vb\vxbtest\testdata.dbf \vb\vxbtest\testdata.ntx FileStruc_Click disable items that would be affected by closing of aircust file Form_Paint Form_Click test for active forms and set menu items accordingly. We do this here as well as when we start up our forms because some functions allow otherr functions to be active and when one or the other is closed and menu items are re-enabled, then we mess up our menur disabling for the ones left open. RecStruc_Click \vb\vxbtest\airtypes.dbf Error Opening airtypes.dbf. Aborting." \vb\vxbtest\airtypes.ntx Error Opening airtypes.ntx. Aborting." UMenu_Click this proc shows how to set up user defined menus on a browse window and also how toe define the browse window initial position Open aircraft types file- \vb\vxbtest\airtypes.dbf Error Opening airtypes.dbf. Aborting." \vb\vxbtest\airtypes.ntx Error Opening airtypes.ntx. Aborting." Declare types table category Description" catname" Declare and build a user menu 19 items in the menu the menu item params are: (1) menu index number (from 1 to whatever was declared) (2) attach this item to submenu number where 0 is the top level browse menu and any other number must refer to a menu index that was defined as VX_MENUHEAD (3) the menu string. An ampersand in front of a character will make that character the mnemonic. If a VX_SEPBAR is being defined, pass a space " "n (4) the menu item type as defined in the global module where VX_MENUHEAD is a submenu header,h VX_SEPBAR is a separator bar, and VX_RETURN is a returnable itema If any item is selected from the browse that is defined as VX_RETURN, the RetVal parameter passed to vxBrowse will contain the value of the menu index number plus 100 and negated (e.g., menu item 6 below will return -106). The record pointer will be positioned at the record that was highlighted when the return was made. If the user presses the ENTER key in the browse, the RetVal willr contain the record number that was highlighted when ENTER was pressed.r the first menu item will set up a submenu on theh browse table top level menu (Attach to item 0)h &File" the item above is attached to the submenu defined as item 1 &Open" &Save" the item above creates another submenu within the File menu &New Name" the items above are under the sub menu defined as item 4) &Print E&xit" now we'll set up another menu on the top level browse menu &Edit" and attach items to menu number 11 below it &Copy" &Paste Cl&ear &Delete" The proc below will set up an initial position for the browse window the coordinates are in familiar character and linew units. The first param is x (characters in from left),m the second param is y (lines down from top), the thirdm param is the width of the window in characters, and the last param is the window height in linesa if the user movers or sizes the window, and subsequente vxBrowse calls are made with an intervening close of the file, the window will retain its last position and size. now we set up the browset Aircraft Types Note that the EDIT menu parameter should be FALSE if you are defining your own menus.m Value returned from browse was "