BBjTopLevelWindow::getValues

Description

In BBj 17 and higher, the this method returns a BBjWindowValues object which contains the values of all simple controls on this BBjTopLevelWindow. Because this value is returned in a single operation, network overhead across distributed client/server connections is minimized. Complex controls containing multiple values (like grids) are not included in this data structure.

Syntax

Return Value

Method

BBjWindowValues

getValues()

Parameters

None.

Return Value

Returns a BBjWindowValues object which contains the values of all simple controls on this BBjTopLevelWindow. Because this value is returned in a single operation, network overhead across distributed client/server connections is minimized. Complex controls containing multiple values (like grids) are not included in this data structure.

Remarks

This is similar to the data structure returned by BBjFormValidationEvent and BBjCloseEvent.

Example

rem ' BBjTopLevelWindow::getValues
sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
title$ = "BBjTopLevelWindow::getValues"
window! = sysgui!.addWindow(50,50,340,325,title$,$00090003$)
window!.setCallback(window!.ON_CLOSE,"eoj")
menubar! = window!.addMenuBar()
menu! = menubar!.addMenu(-100,"&File")
titem! = menu!.addMenuItem(-101,"get&Text")
titem!.setCallback(titem!.ON_MENU_ITEM_SELECT,"getText")
vitem! = menu!.addMenuItem(-102,"get&Values")
vitem!.setCallback(vitem!.ON_MENU_ITEM_SELECT,"getValues")
exit! = menu!.addMenuItem(-103,"E&xit")
exit!.setCallback(exit!.ON_MENU_ITEM_SELECT,"eoj")
list$="";for i=asc("A") to asc("Z");list$=list$+chr(i)+$0a$;next i
gosub init; rem ' temp file + recordset
fast_touch_click$ = stbl("!OPTIONS","FAST_TOUCH_CLICK=TRUE")
navigator! = window!.addNavigator(100,10,10,320,25,"Navigator",$$)
navigator!.setToolTipText("BBjNavigator")
navigator!.bindRecordSet(recordset!,"key")
navigator!.setCallback(navigator!.ON_NAV_FIRST,"nav_first")
navigator!.setCallback(navigator!.ON_NAV_PREVIOUS,"nav_previous")
navigator!.setCallback(navigator!.ON_NAV_NEXT,"nav_next")
navigator!.setCallback(navigator!.ON_NAV_LAST,"nav_last")
listbox! = window!.addListBox(101,10,45,100,60,list$,$$)
listbox!.setToolTipText("BBjListBox")
listbox!.bindRecordSet(recordset!,"listbox")
listbutton! = window!.addListButton(102,120,45,100,160,list$,$$)
listbutton!.setToolTipText("BBjListButton")
listbutton!.bindRecordSet(recordset!,"listbutton")
listedit! = window!.addListEdit(103,230,45,100,160,list$,$$)
listedit!.setToolTipText("BBjListEdit")
listedit!.bindRecordSet(recordset!,"listedit")
editbox! = window!.addEditBox(104,120,80,100,25,"",$$)
editbox!.setToolTipText("BBjEditBox")
editbox!.bindRecordSet(recordset!,"editbox")
password! = window!.addEditBox(105,230,80,100,25,"",$0400$)
password!.setToolTipText("BBjEditBox (Password)")
password!.bindRecordSet(recordset!,"password")
cedit! = window!.addCEdit(106,10,115,100,60,"",$8106$)
cedit!.setToolTipText("BBjCEdit")
cedit!.bindRecordSet(recordset!,"cedit")
text! = window!.addStaticText(107,10,185,100,25,"",$$)
text!.setToolTipText("BBjStaticText")
text!.bindRecordSet(recordset!,"text")
inpute! = window!.addInputE(108,120,115,100,25,$$,"XXXX-XXXX-XXXX-XXXX")
inpute!.setToolTipText("BBjInputE")
inpute!.bindRecordSet(recordset!,"inpute")
inputn! = window!.addInputN(109,120,150,100,25,$$,"$###,###,###.00-")
inputn!.setToolTipText("BBjInputN")
inputn!.bindRecordSet(recordset!,"inputn")
inputd! = window!.addInputD(110,120,185,100,25)
inputd!.setToolTipText("BBjInputD")
inputd!.bindRecordSet(recordset!,"inputd")
checkbox! = window!.addCheckBox(111,230,115,100,25,"CheckBox",$$)
checkbox!.setToolTipText("BBjCheckBox")
checkbox!.bindRecordSet(recordset!,"checkbox")
radio1! = window!.addRadioButton(112,230,150,100,25,"Radio1",$$)
radio1!.setToolTipText("BBjRadioButton")
radio1!.bindRecordSet(recordset!,"radio1")
radio1!.setCallback(radio1!.ON_CHECK_ON,"check")
radio1!.setCallback(radio1!.ON_CHECK_OFF,"check")
radio2! = window!.addRadioButton(113,230,185,100,25,"Radio2",$$)
radio2!.setToolTipText("BBjRadioButton")
radio2!.bindRecordSet(recordset!,"radio2")
radio2!.setCallback(radio2!.ON_CHECK_ON,"check")
radio2!.setCallback(radio2!.ON_CHECK_OFF,"check")
slider! = window!.addHorizontalSlider(114,10,220,320,50)
slider!.setMajorTickSpacing(10)
slider!.setMinorTickSpacing(5)
slider!.setPaintTicks(1)
slider!.setPaintLabels(1)
slider!.setToolTipText("BBjSlider")
slider!.bindRecordSet(recordset!,"slider")
form! = window!.addButton(1,10,285,125,25,"FormValidation",$$)
form!.setCallback(form!.ON_BUTTON_PUSH,"form")
form!.setCallback(form!.ON_FORM_VALIDATION,"formvalidation")
getValues! = window!.addButton(2,140,285,95,25,"getValues",$$)
getValues!.setCallback(getValues!.ON_BUTTON_PUSH,"getValues")
getText! = window!.addButton(3,240,285,90,25,"getText",$$)
getText!.setCallback(getText!.ON_BUTTON_PUSH,"getText")
radiogroup! = window!.addRadioGroup()
radiogroup!.add(radio1!)
radiogroup!.add(radio2!)
print recordset!.getCurrentRecordData()
for id = 101 to 114
  window!.getControl(id).setCallback(window!.ON_LOST_FOCUS,"blur",err=*next)
next id
process_events
eoj:
  rem ' gosub dirty
  recordset!.close()
  erase filename$
  release
init:
mkdir "./files",err=*next
filename$ = "./files/navigator"+str(dec(info(3,0)))+".dat"
erase filename$,err=*next
vkeyed filename$,[0:1:4],0,1024
temp = unt
open (temp)filename$
template$ = "key:c(4),slider:n(3*),listbox:c(1*),listbutton:c(1*),listedit:c(1*),"
template$ = template$ + "radio1:n(1*),radio2:n(1*),checkbox:n(1*),inputn:n(9*),"
template$ = template$ + "inputd:n(7*),text:c(10*),editbox:c(10*),password:c(10*),"
template$ = template$ + "inpute:c(10*),cedit:c(99*=)"
dim rec$:template$
for rec = 1 to 100
   rec.key$ = str(rec*10:"0000"); rem str(rnd(9999):"0000")
   rec.slider = rnd(100)
   rec.listbox$ = chr(asc("A")+rnd(26))
   rec.listbutton$ = chr(asc("A")+rnd(26))
   rec.listedit$ = chr(asc("A")+rnd(26))
   rec.radio2 = mod(rec,2)
   rec.radio1 = !(rec.radio2)
   rec.checkbox = rnd(2)
   rec.inputn = rnd(0) * 9999999
   rec.inputd = rnd(1000) + jul(0,0,0) - 500
   gosub text; rec.text$ = text$
   gosub text; rec.editbox$ = text$
   gosub text; rec.password$ = text$
   gosub text; rec.inpute$ = text$
   rec.cedit$ = ""
   for x = 0 to rnd(16);gosub text;rec.cedit$=rec.cedit$+text$+" ";next x
   writerecord(temp)rec$
next rec
close (temp)
recordset! = bbjapi().createFileRecordSet(filename$,"",fattr(rec$))
return
text:
   text$ = ""
   for i = 1 to rnd(16)
       text$ = text$ + chr(asc("a")+rnd(26))
    next i
   return
return
check:
   event! = sysgui!.getLastEvent()
   control! = event!.getControl()
   print control!," ",event!
return
nav_first:
   gosub dirty
   recordset!.first(err=*next)
   print recordset!.getCurrentRecordData()
return
nav_previous:
   gosub dirty
   recordset!.previous(err=*next)
   print recordset!.getCurrentRecordData()
return
nav_next:
   gosub dirty
   recordset!.next(err=*next)
   print recordset!.getCurrentRecordData()
return
nav_last:
   gosub dirty
   recordset!.last(err=*next)
   print recordset!.getCurrentRecordData()
return
dirty:
if recordset!.isCurrentRecordDirty() then
   print recordset!.getCurrentRecordData()
   i = msgbox("Save record?",4+32+256,"Record Changed")
   if i = 6 then
      recordset!.update(recordset!.getCurrentRecordData())
   endif
endif
return
form:
event! = sysgui!.getLastEvent()
print event!.getEventName()
return
getText:
html! = new StringBuilder("<html>")
dim text$[101:114]
ms = System.currentTimeMillis()
text$[101] = window!.getControl(101).getText()
text$[102] = window!.getControl(102).getText()
text$[103] = window!.getControl(103).getText()
text$[104] = window!.getControl(104).getText()
text$[105] = window!.getControl(105).getText()
text$[106] = window!.getControl(106).getText()
text$[107] = window!.getControl(107).getText()
text$[108] = window!.getControl(108).getText()
text$[109] = window!.getControl(109).getText()
text$[110] = str(window!.getControl(110).getValue())
text$[111] = str(window!.getControl(111).isSelected())
text$[112] = str(window!.getControl(112).isSelected())
text$[113] = str(window!.getControl(113).isSelected())
text$[114] = str(window!.getControl(114).getValue())
ms = System.currentTimeMillis() - ms
title$ = "getText time for 14 controls: " + str(ms) + " msec."
for id = 101 to 114
  control! = window!.getControl(id)
  control$ = control!.toString()
  control$ = control$(1,pos("@"=control$)-1)
  html!.append(control$).append(" ").append(str(id)).append(" = ")
  html!.append("""").append(cvs(text$[id],16)).append("""").append("<br>")
next id
a = msgbox(html!.toString(),0,title$)
return
formvalidation:
event! = sysgui!.getLastEvent()
event$ = event!.getEventName()
html! = new StringBuilder("<html>")
dim text$[101:114]
ms = System.currentTimeMillis()
for id = 101 to 114
  text$[id] = event!.getText(window!.getControl(id))
next id
event!.accept(event!.isSelected(checkbox!))
ms = System.currentTimeMillis() - ms
title$ = event$ + " time for 14 controls: " + str(ms) + " msec"
for id = 101 to 114
  control! = window!.getControl(id)
  control$ = control!.toString()
  control$ = control$(1,pos("@"=control$)-1)
  html!.append(control$).append(" ").append(str(id)).append(" = ")
  html!.append("""").append(cvs(text$[id],16)).append("""").append("<br>")
next id
a = msgbox(html!.toString(),0,title$)
return
getvalues:
ms = System.currentTimeMillis()
values! = window!.getValues()
map! = values!.getMap()
html! = new StringBuilder("<html>")
dim text$[101:114]
for id = 101 to 114
  text$[id] = values!.getText(window!.getControl(id))
next id
ms = System.currentTimeMillis() - ms
title$ = "getValues time for 14 controls: " + str(ms) + " msec"
for id = 101 to 114
  control! = window!.getControl(id)
  control$ = control!.getToolTipText()
  html!.append(control$).append(" ").append(str(id)).append(" = ")
  html!.append("""").append(cvs(text$[id],16)).append("""").append("<br>")
next id
a = msgbox(html!.toString(),0,title$)
return
blur:
event! = sysgui!.getLastEvent()
print event!.getEventName()," ",event!.getText()," ",event!.isTemporary()
return

See Also

BBjAPI

BBjCloseEvent

BBjFormValidationEvent

BBj Object Syntax

BBj Object Diagram for an illustration of the relationship between BBjObjects.



______________________________________________________________________________________

Copyright BASIS International Ltd. BBj®, Visual PRO/5®, PRO/5®, and BBx® are registered trademarks.