home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 August / PCWorld_2000-08_cd.bin / Software / TemaCD / xbasic / xbpro.exe / xb / query.win < prev    next >
Text File  |  1996-02-15  |  10KB  |  223 lines

  1. '
  2. '
  3. ' ######################
  4. ' #####  Query ()  #####
  5. ' ######################
  6. '
  7. ' "Anatomy of Grid Functions" in the GuiDesigner Programmer Guide
  8. ' describes the operation and modification of grid functions in detail.
  9. '
  10. ' WindowFromFunction and/or WindowToFunction may not work, or may not generate the desired results if you:
  11. '   * Modify the kid constant definition improperly.
  12. '   * Modify the code in the Create subroutine improperly.
  13. '   * Imbed blank or comment lines in the Create subroutine.
  14. '   * Remove the GOSUB Resize line in the Create subroutine (comment out is okay).
  15. '   * Imbed special purpose code in the Create subroutine before the GOSUB Resize line.
  16. '   * Delete any of the four lines that assign values to designX, designY, designWidth, designHeight.
  17. '
  18. FUNCTION  Query (grid, message, v0, v1, v2, v3, r0, (r1, r1$, r1[], r1$[]))
  19.   STATIC  designX,  designY,  designWidth,  designHeight
  20.   STATIC  SUBADDR  sub[]
  21.   STATIC  upperMessage
  22.   STATIC  Query
  23. '
  24.   $Query         =   0  ' kid   0 grid type = Query
  25.   $DataMenu      =   1  ' kid   1 grid type = XuiMenu
  26.   $LastLabel     =   2  ' kid   2 grid type = XuiLabel
  27.   $LastText      =   3  ' kid   3 grid type = XuiTextLine
  28.   $FirstLabel    =   4  ' kid   4 grid type = XuiLabel
  29.   $FirstText     =   5  ' kid   5 grid type = XuiTextLine
  30.   $PhoneLabel    =   6  ' kid   6 grid type = XuiLabel
  31.   $PhoneText     =   7  ' kid   7 grid type = XuiTextLine
  32.   $NewButton     =   8  ' kid   8 grid type = XuiPushButton
  33.   $DeleteButton  =   9  ' kid   9 grid type = XuiPushButton
  34.   $UpdateButton  =  10  ' kid  10 grid type = XuiPushButton
  35.   $QueryButton   =  11  ' kid  11 grid type = XuiPushButton
  36.   $ExitButton    =  12  ' kid  12 grid type = XuiPushButton
  37.   $UpperKid      =  12  ' kid maximum
  38. '
  39. '
  40.   IFZ sub[] THEN GOSUB Initialize
  41. ' XuiReportMessage (grid, message, v0, v1, v2, v3, r0, r1)
  42.   IF XuiProcessMessage (grid, message, @v0, @v1, @v2, @v3, @r0, @r1, Query) THEN RETURN
  43.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  44.   RETURN
  45. '
  46. '
  47. ' *****  Callback  *****  message = Callback : r1 = original message
  48. '
  49. SUB Callback
  50.   message = r1
  51.   callback = message
  52.   IF (message <= upperMessage) THEN GOSUB @sub[message]
  53. END SUB
  54. '
  55. '
  56. ' *****  Create  *****  v0123 = xywh : r0 = window : r1 = parent
  57. '
  58. SUB Create
  59.   IF (v0 <= 0) THEN v0 = 0
  60.   IF (v1 <= 0) THEN v1 = 0
  61.   IF (v2 <= 0) THEN v2 = designWidth
  62.   IF (v3 <= 0) THEN v3 = designHeight
  63.   XuiCreateGrid (@grid, Query, @v0, @v1, @v2, @v3, r0, r1, &Query())
  64.   XuiSendMessage ( grid, #SetGridName, 0, 0, 0, 0, 0, @"Query")
  65.   XuiMenu        (@g, #Create, 4, 4, 312, 20, r0, grid)
  66.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $DataMenu, grid)
  67.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"DataMenu")
  68.   XuiSendMessage ( g, #SetColor, $$LightRed, $$Black, $$Black, $$White, 0, 0)
  69.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"_File  _Edit  _Data  _Help  ")
  70.   DIM text$[16]
  71.   text$[ 0] = "_File"
  72.   text$[ 1] = " _Load"
  73.   text$[ 2] = " _Save"
  74.   text$[ 3] = " _Quit"
  75.   text$[ 4] = "_Edit"
  76.   text$[ 5] = " _Cut"
  77.   text$[ 6] = " _Grab"
  78.   text$[ 7] = " _Paste"
  79.   text$[ 8] = "_Data"
  80.   text$[ 9] = " _Sort"
  81.   text$[10] = " _Convert"
  82.   text$[11] = " _Destroy"
  83.   text$[12] = " _Encript"
  84.   text$[13] = "_Help"
  85.   text$[14] = " _Index"
  86.   text$[15] = " _Summary"
  87.   text$[16] = " _Contents"
  88.   XuiSendMessage ( g, #SetTextArray, 0, 0, 0, 0, 0, @text$[])
  89.   XuiLabel       (@g, #Create, 4, 24, 88, 36, r0, grid)
  90.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"LastLabel")
  91.   XuiSendMessage ( g, #SetColor, $$Grey, $$Black, $$Black, $$White, 0, 0)
  92.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Last")
  93.   XuiTextLine    (@g, #Create, 92, 24, 224, 36, r0, grid)
  94.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $LastText, grid)
  95.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"LastText")
  96.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"McDonald")
  97.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"XuiArea798")
  98.   XuiLabel       (@g, #Create, 4, 60, 88, 36, r0, grid)
  99.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FirstLabel")
  100.   XuiSendMessage ( g, #SetColor, $$Grey, $$Black, $$Black, $$White, 0, 0)
  101.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"First")
  102.   XuiTextLine    (@g, #Create, 92, 60, 224, 36, r0, grid)
  103.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $FirstText, grid)
  104.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"FirstText")
  105.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Ronald")
  106.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"XuiArea801")
  107.   XuiLabel       (@g, #Create, 4, 96, 88, 36, r0, grid)
  108.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"PhoneLabel")
  109.   XuiSendMessage ( g, #SetColor, $$Grey, $$Black, $$Black, $$White, 0, 0)
  110.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Phone")
  111.   XuiTextLine    (@g, #Create, 92, 96, 224, 36, r0, grid)
  112.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $PhoneText, grid)
  113.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"PhoneText")
  114.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"1-800-BURGERS")
  115.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 1, @"XuiArea804")
  116.   XuiPushButton  (@g, #Create, 4, 132, 104, 36, r0, grid)
  117.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $NewButton, grid)
  118.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"NewButton")
  119.   XuiSendMessage ( g, #SetColor, 17, $$Black, $$Black, $$White, 0, 0)
  120.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"New")
  121.   XuiPushButton  (@g, #Create, 108, 132, 104, 36, r0, grid)
  122.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $DeleteButton, grid)
  123.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"DeleteButton")
  124.   XuiSendMessage ( g, #SetColor, 17, $$Black, $$Black, $$White, 0, 0)
  125.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Delete")
  126.   XuiPushButton  (@g, #Create, 212, 132, 104, 36, r0, grid)
  127.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $UpdateButton, grid)
  128.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"UpdateButton")
  129.   XuiSendMessage ( g, #SetColor, 17, $$Black, $$DarkBlue, $$White, 0, 0)
  130.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Update")
  131.   XuiPushButton  (@g, #Create, 4, 168, 156, 36, r0, grid)
  132.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $QueryButton, grid)
  133.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"QueryButton")
  134.   XuiSendMessage ( g, #SetColor, 17, $$Black, $$Black, $$White, 0, 0)
  135.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Query")
  136.   XuiPushButton  (@g, #Create, 160, 168, 156, 36, r0, grid)
  137.   XuiSendMessage ( g, #SetCallback, grid, &Query(), -1, -1, $ExitButton, grid)
  138.   XuiSendMessage ( g, #SetGridName, 0, 0, 0, 0, 0, @"ExitButton")
  139.   XuiSendMessage ( g, #SetColor, 102, $$Black, $$Black, $$White, 0, 0)
  140.   XuiSendMessage ( g, #SetTexture, $$TextureShadow, 0, 0, 0, 0, 0)
  141.   XuiSendMessage ( g, #SetTextString, 0, 0, 0, 0, 0, @"Exit")
  142.   GOSUB Resize
  143. END SUB
  144. '
  145. '
  146. ' *****  CreateWindow  *****  v0123 = xywh : r0 = windowType : r1 = &WindowFunc()
  147. '
  148. SUB CreateWindow
  149.   IF (v0 =  0) THEN v0 = designX
  150.   IF (v1 =  0) THEN v1 = designY
  151.   IF (v2 <= 0) THEN v2 = designWidth
  152.   IF (v3 <= 0) THEN v3 = designHeight
  153.   XuiWindow (@window, #WindowCreate, v0, v1, v2, v3, r0, r1)
  154.   v0 = 0 : v1 = 0 : r0 = window : r1 = 0
  155.   GOSUB Create
  156.   XuiWindow (window, #WindowRegister, grid, -1, v2, v3, @r0, @"Query")
  157. END SUB
  158. '
  159. '
  160. ' *****  GetSmallestSize  *****  See "Anatomy of Grid Functions"
  161. '
  162. SUB GetSmallestSize
  163. END SUB
  164. '
  165. '
  166. ' *****  Resize  *****  See "Anatomy of Grid Functions"
  167. '
  168. SUB Resize
  169. END SUB
  170. '
  171. '
  172. ' *****  Selection  *****  See "Anatomy of Grid Functions"
  173. '
  174. SUB Selection
  175. END SUB
  176. '
  177. '
  178. ' *****  Initialize  *****  ' see "Anatomy of Grid Functions"
  179. '
  180. SUB Initialize
  181.   XuiGetDefaultMessageFuncArray (@func[])
  182.   XgrMessageNameToNumber (@"LastMessage", @upperMessage)
  183. '
  184.   func[#Callback]           = &XuiCallback ()               ' disable to handle Callback messages internally
  185. ' func[#GetSmallestSize]    = 0                             ' enable to add internal GetSmallestSize routine
  186. ' func[#Resize]             = 0                             ' enable to add internal Resize routine
  187. '
  188.   DIM sub[upperMessage]
  189. ' sub[#Callback]            = SUBADDRESS (Callback)         ' enable to handle Callback messages internally
  190.   sub[#Create]              = SUBADDRESS (Create)           ' must be internal routine
  191.   sub[#CreateWindow]        = SUBADDRESS (CreateWindow)     ' must be internal routine
  192. ' sub[#GetSmallestSize]     = SUBADDRESS (GetSmallestSize)  ' enable to add internal GetSmallestSize routine
  193. ' sub[#Resize]              = SUBADDRESS (Resize)           ' enable to add internal Resize routine
  194.   sub[#Selection]           = SUBADDRESS (Selection)        ' routes Selection callbacks to subroutine
  195. '
  196.   IF sub[0] THEN PRINT "Query(): Initialize: Error::: (Undefined Message)
  197.   IF func[0] THEN PRINT "Query(): Initialize: Error::: (Undefined Message)
  198.   XuiRegisterGridType (@Query, "Query", &Query(), @func[], @sub[])
  199. '
  200. ' Don't remove the following 4 lines, or WindowFromFunction/WindowToFunction will not work
  201. '
  202.   designX = 524
  203.   designY = 75
  204.   designWidth = 320
  205.   designHeight = 208
  206. '
  207.   gridType = Query
  208.   XuiSetGridTypeValue (gridType, @"x",                designX)
  209.   XuiSetGridTypeValue (gridType, @"y",                designY)
  210.   XuiSetGridTypeValue (gridType, @"width",            designWidth)
  211.   XuiSetGridTypeValue (gridType, @"height",           designHeight)
  212.   XuiSetGridTypeValue (gridType, @"maxWidth",         designWidth)
  213.   XuiSetGridTypeValue (gridType, @"maxHeight",        designHeight)
  214.   XuiSetGridTypeValue (gridType, @"minWidth",         designWidth)
  215.   XuiSetGridTypeValue (gridType, @"minHeight",        designHeight)
  216.   XuiSetGridTypeValue (gridType, @"border",           $$BorderFrame)
  217.   XuiSetGridTypeValue (gridType, @"can",              $$Focus OR $$Respond OR $$Callback OR $$TextSelection)
  218.   XuiSetGridTypeValue (gridType, @"focusKid",         $LastText)
  219.   XuiSetGridTypeValue (gridType, @"inputTextString",  $LastText)
  220.   IFZ message THEN RETURN
  221. END SUB
  222. END FUNCTION
  223.