Hi Experts,
How can I do a user input but it looks like combo box list. The user should pick one item from the list and then proceed … I searched all types of widgets but I cant find one that can do that… I need your help.
Regards
Abdul
Hi Experts,
How can I do a user input but it looks like combo box list. The user should pick one item from the list and then proceed … I searched all types of widgets but I cant find one that can do that… I need your help.
Regards
Abdul
widget.newPickerWheel() is the only one currently that allows you to select from a list. It’s the same functionality it just looks different then a combo box.
thanks primoz for the quick reply…
i saw that widget but i thought there is something else… the issue with this widget, it take space as well you cant hide it when you have a form that has more controls such as labels , text boxes etc,
i want the user to select a region name (location) then there is another list will be filtered to show the schools in that region only. If the user select for example region x then the next widget should show the schools in region x.
any idea ?
Abdul
thanks primoz for the quick reply…
i saw that widget but i thought there is something else… the issue with this widget, it take space as well you cant hide it when you have a form that has more controls such as labels , text boxes etc,
i want the user to select a region name (location) then there is another list will be filtered to show the schools in that region only. If the user select for example region x then the next widget should show the schools in region x.
any idea ?
Abdul
You don’t have to show the widget at first. You can have some sort of place holder (draw it with images) that holds the current text and then if the user touches it pop-up the pickerWheel in an overlay scene if you’re using storyboard/composer.
You can put the correct values in the second picker based on what was selected in the first one.
Hi pirmoz,
I tried to play with what you have explained earlier but i am not able to simulate what you mentioned. Can you help with some sudu codes or some examples
Thanks
Abdul
Also I am not able to control the height and the width of the Picker wheel… is there a way to do it ?
regards
Abdul
technically the pickerWheel is a special mode tableView. It might be possible to simulate a comboBox in some cases with a tableView and get better results as the tableView has more controls over visuals etc. Just a thought.
Also checkout Atanas’s newEditField widget. It has a special mode where it bonds with a pickerWheel and hence providing the comboBox feel with the display for chosen item built right into it. Just a thought.
You can not change width or height on the picker wheel unfortunately.
I can’t really give you the code for this as there would be quite a lot of it due the need to setup the picker wheel you can check how in the docs http://docs.coronalabs.com/api/library/widget/newPickerWheel.html
The logic of what I meant was this:
- put text (with optional image background and arrow indicating possible selection popup) on screen for the first and second combo.
- when the user presses the first text popup the picker wheel in an overly scene or just draw it over the current scene but make sure you block touches to the objects in the back.
- when user chooses the value in the first picker you remember it and remove the picker wheel and update the text (if needed) in the second one.
- when the user presses the second one you popup a picker wheel with possible values based on what was selected in the first one.
When you have some code together and get the picker wheel working if you still have a problem post it here and I’ll look at it.
ksan,
where i can find the docs about the usage of newEditField widget?
Thanks
Abdul
hi primoz,
i am working to try your logic. i am almost there … i will post once done. thanks for the explanation,
regards
Abdul
We are working on a site to host the newEditField and other widget related goodies from Atanas. It is still in development so not formally announced yet. You can find this site at http://widgetstown.com/ and register for free access to the docs and sample apps. Also checkout the blog section where Atanas and I documented some aspects of the widget and using them through bypassing the versions that are baked into core Corona SDK. Please feel free to leave feedback.
Thanks ksan for the info , i am trying it and see how to use it
Abdul
pm me with your email address so we can get you the sample app. Hopefully reviewing the sample will help you overcome this initial challenge.
Hi All,
I get this working to some extend (not perfect ) and I would like to share with you. Maybe someone needs something to start with :
main.lua
[lua]
local storyboard = require “storyboard”
local options =
{
effect = “slideLeft”,
time = 800,
}
storyboard.gotoScene( “list”, options )
[/lua]
list.lua
[lua]
local widget = require( “widget” )
local storyboard = require( “storyboard” )
–require (“widgetLibrary.widgetext”)
–require (“widgets.storyboardext”)
display.setDefault( “anchorX”, 0.5 )
display.setDefault( “anchorY”, 0 )
local scene = storyboard.newScene()
local pickerRegions
local pickerSchools
local schoolsTable
local columnData2
local ShowRegion
local showSchool
local clickBtn
local RegionImg
local SchoolImg
local whichTextFeild
local currentTbl
local regionsIsBlank = true
_G.Reg=“Muscat”
function ShowRegion(event)
pickerRegions.isVisible = true
pickerSchools.isVisible = false
whichTextFeild = “Region”
print(whichTextFeild)
end
function UpdateSchool()
pickerSchools:removeSelf()
pickerSchools= nil
columnData2 =
{
{
align = “center”,
--width=100,
startIndex = 3,
labels =currentTbl
},
}
pickerSchools = widget.newPickerWheel
{
top = 140,
left = 0,
columns = columnData2
}
pickerSchools.isVisible = false
end
function showSchool(event)
if (regionsIsBlank==true) then
native.showAlert ( “Note”, “Please select a region first !” )
else
pickerRegions.isVisible = false
pickerSchools.isVisible = true
whichTextFeild = “School”
print(whichTextFeild)
print("selectedRegion.text in showSchool = " , selectedRegion.text)
print("_G.Reg in showSchool = ", _G.Reg)
end
end
local function handleButtonEvent( event )
if ( _G.Reg == nil ) and (pickerRegions.isVisible ==false) then
native.showAlert ( “Note”, “Please select a region first !” )
else
print("whichTextFeild in handlebuttonEvent = " …whichTextFeild)
--pickerRegions.isVisible = true
if (pickerRegions.isVisible) then
local values = pickerRegions:getValues()
print(values[1].value)
_G.Reg = values[1].value
regionsIsBlank=false
selectedRegion.text = _G.Reg
currentTbl = schoolsTable[_G.Reg]
selectedSchool.text = “”
UpdateSchool()
pickerRegions.isVisible = false
else
local values = pickerSchools:getValues()
print(values[1].value)
_G.School= values[1].value
selectedSchool.text = _G.School
print(" iam in else")
pickerSchools.isVisible = false
end
end
end
function scene:createScene( event )
local group = self.view
local editGroup = display.newGroup()
group:insert(editGroup)
print(“i am in create scene : list”)
– Create the widget
local bg = display.newRect( group, 0, 0, 380, 560)
bg.anchorX =0
bg.anchorY =0
bg:setFillColor(0.5,0.5, 0.5)
local labelRegion = display.newText( "Region ", 40,55 , native.systemFont, 18 )
selectedRegion =native.newTextField( 160, 80, 300, 40 )
--selectedRegion = display.newText( “”, 220,200 , native.systemFont, 18 )
local labelSchool = display.newText( "School ", 40, 120, native.systemFont, 18 )
selectedSchool= native.newTextField( 160, 145, 300, 40 )
------------------------
local columnData =
{
– regions
{
align = “right”,
width = 150,
startIndex = 3,
labels = {“Muscat”,“AlBatenah”,“Musandam”,“AlDakhlia”,“AlDhahera”},
},
}
– Create the widget
pickerRegions = widget.newPickerWheel
{
top = 140,
left= 0,
columns = columnData
}
pickerRegions.isVisible = false
--------------
local button1 = widget.newButton
{
top= 190,
left=10,
width = 173,
height = 39,
defaultFile = “default.png”,
overFile = “over.png”,
--label = “button”,
onPress = handleButtonEvent
}
– Change the button’s label text
--button1:setLabel( “2-Image” )
-----------------------------------------------------------------------------
– CREATE display objects and add them to ‘group’ here.
– Example use-case: Restore ‘group’ from previously saved state.
-------------------------
schoolsTable= {
Muscat = {“AlFatooq”,“AlHawari”,“Muscat1”,“Omani2”},
AlBatenah = {“B1”,“B2”,“B3”,“B3”},
Musandam = {“M1”,“M2”,“M3”,“M3”},
AlDakhlia = {“K1”,“K2”,“K3”,“K3”},
AlDhahera = {“D1”,“D2”,“D3”,“D3”}
}
currentTbl = schoolsTable[_G.Reg]
columnData2 =
{
{
align = “center”,
--width=100,
startIndex = 3,
labels =currentTbl
},
}
pickerSchools = widget.newPickerWheel
{
top = 140,
left = 0,
columns = columnData2
}
pickerSchools.isVisible = false
-----------------------------------------------------------------------------
group:insert(bg)
group:insert(labelRegion)
group:insert(labelSchool)
--group:insert(clickBtn)
– group:insert(RegionImg)
--group:insert(SchoolImg)
end
function scene:enterScene( event )
local group = self.view
--clickBtn:addEventListener ( “tap”, ShowPicker )
print(“i am in enter scene : list”)
--RegionImg:addEventListener ( “tap”, ShowRegion )
--SchoolImg:addEventListener ( “tap”, showSchool )
selectedRegion:addEventListener ( “userInput”, ShowRegion )
selectedSchool:addEventListener ( “userInput”, showSchool )
-----------------------------------------------------------------------------
– INSERT code here (e.g. start timers, load audio, start listeners, etc.)
-----------------------------------------------------------------------------
end
function scene:exitScene( event )
local group = self.view
print(“i am in exit scene : list”)
-----------------------------------------------------------------------------
– INSERT code here (e.g. stop timers, remove listeners, unload sounds, etc.)
-----------------------------------------------------------------------------
end
function scene:destroyScene( event )
local group = self.view
-----------------------------------------------------------------------------
– INSERT code here (e.g. remove listeners, widgets, save state, etc.)
-----------------------------------------------------------------------------
end
scene:addEventListener( “createScene”, scene )
scene:addEventListener( “enterScene”, scene )
scene:addEventListener( “exitScene”, scene )
scene:addEventListener( “destroyScene”, scene )
return scene
[/lua]
only you need images for the button and you will be ready to go… Also I am testing the neweditfield and if i get something useful, i will share with you.
Thanks All for the support.
Abdul
widget.newPickerWheel() is the only one currently that allows you to select from a list. It’s the same functionality it just looks different then a combo box.
thanks primoz for the quick reply…
i saw that widget but i thought there is something else… the issue with this widget, it take space as well you cant hide it when you have a form that has more controls such as labels , text boxes etc,
i want the user to select a region name (location) then there is another list will be filtered to show the schools in that region only. If the user select for example region x then the next widget should show the schools in region x.
any idea ?
Abdul
thanks primoz for the quick reply…
i saw that widget but i thought there is something else… the issue with this widget, it take space as well you cant hide it when you have a form that has more controls such as labels , text boxes etc,
i want the user to select a region name (location) then there is another list will be filtered to show the schools in that region only. If the user select for example region x then the next widget should show the schools in region x.
any idea ?
Abdul
You don’t have to show the widget at first. You can have some sort of place holder (draw it with images) that holds the current text and then if the user touches it pop-up the pickerWheel in an overlay scene if you’re using storyboard/composer.
You can put the correct values in the second picker based on what was selected in the first one.
Hi pirmoz,
I tried to play with what you have explained earlier but i am not able to simulate what you mentioned. Can you help with some sudu codes or some examples
Thanks
Abdul