Author |
Topic: Is this a dumb idea? (Read 262 times) |
|
Alincon
Full Member
member is offline
Posts: 147
|
|
Is this a dumb idea?
« Thread started on: Mar 7th, 2017, 8:37pm » |
|
I wanted to enter a date by clicking, not typing. I was unable to get a combo box to show 31 days, so I tried ranges. You have to click once for range and once for item within range to choose days and years.
Code:
nomainwin
dim months$(12), days$(11)
for n = 1 to 12 : months$(n) = right$("0"+str$(n),2) : next
days$(1) = "01-10":days$(2) = "11-20":days$(3) = "21-31"
for n = 1 to 10 step 1: years$(n) = str$(n*10+1910)+"'s" : next
WindowWidth = 400 : WindowHeight = 400
statictext #student.statictext6, "Date of Birth", 100, 5, 99, 20
statictext #student.statictext7, "Mo Day Year", 70, 20, 160, 40
combobox #student.mocb, months$(,[mos],60,40,40,60
combobox #student.dacb, days$(,[days],107,40,50,50
combobox #student.yrcb, years$(,[years],165,40,60,300
open "Enter Date" for window as #student
#student, "font ms_sans_serif 8"
#student, "trapclose [studentEnd]"
wait
[studentEnd]
#student.mocb, "selection? mx$"
#student.dacb, "selection? dx$"
#student.yrcb, "selection? decade$"
notice mx$;" ";dx$;" ";decade$
close #student
end
[mos]
#student.mocb, "selection? mx$"
wait
[days]
#student.dacb, "selection? da$"
if instr(da$,"-") = 0 then wait
#student.dacb, "selectionindex? dx"
select dx
case 1 : m = 0 : p = 10
case 2 : m = 10 : p = 10
case 3 : m = 20 : p = 11
end select
for n = 1 to p
days$(n) = right$("0"+str$(n+m),2)
next
#student.dacb, "selectindex 0"
#student.dacb,"reload"
#student.dacb,"!";da$
wait
[years]
#student.yrcb,"selection? decade$"
if right$(decade$,1) <> "s" then wait
decade = val(left$(decade$,4))
for n = 1 to 10 :years$(n) = str$(decade+n-1):next
#student.yrcb, "selectindex 0"
#student.yrcb,"reload"
#student.yrcb,"!";decade$
wait
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: Is this a dumb idea?
« Reply #1 on: Mar 7th, 2017, 10:51pm » |
|
on Mar 7th, 2017, 8:37pm, Alincon wrote:I was unable to get a combo box to show 31 days |
|
What was the problem? I don't see any issues here with a combobox displaying 31 days. Admittedly a scrollbar is needed, by default, but you can override that so that all 31 days are shown if you want to (and your screen height is sufficient):
Code: nomainwin
dim days$(31)
for n = 1 to 31 : days$(n) = right$("0"+str$(n),2) : next
WindowWidth = 400 : WindowHeight = 400
combobox #student.dacb, days$(),[days],107,40,50,200
open "Enter Date" for window as #student
#student, "font ms_sans_serif 8"
#student, "trapclose [quit]"
hdacb = hwnd(#student.dacb)
calldll #user32, "SendMessageA", hdacb as ulong, _CB_SETMINVISIBLE as long, _
31 as long, 0 as long, ret as void
wait
[quit]
close #student
end Richard.
|
|
Logged
|
|
|
|
Alincon
Full Member
member is offline
Posts: 147
|
|
Re: Is this a dumb idea?
« Reply #2 on: Mar 8th, 2017, 1:10pm » |
|
I was not aware of the _CB_SETMINVISIBLE call - good to know.
But LB4.5 seems not to be aware of it either.
r.m.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: Is this a dumb idea?
« Reply #3 on: Mar 8th, 2017, 4:15pm » |
|
on Mar 8th, 2017, 1:10pm, Alincon wrote:But LB4.5 seems not to be aware of it either. |
|
Not my problem! Indeed not a problem at all, so long as you know the numeric value (which LBB will tell you).
Richard.
|
|
Logged
|
|
|
|
Alincon
Full Member
member is offline
Posts: 147
|
|
Re: Is this a dumb idea?
« Reply #4 on: Mar 8th, 2017, 7:10pm » |
|
Agree that LB4.5 problems are not your problem. At your suggestion, I printed the value of the constant in LBB It's 5889, and that does work in LB4.5.
But back to the title question: is a two-step process for choosing date components too cumbersome? Choosing a year from 100 entries would involve more than one step, too.
I also wondered if anyone else would want to use combo boxes this way.
r.m.
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline
Posts: 1348
|
|
Re: Is this a dumb idea?
« Reply #5 on: Mar 8th, 2017, 9:18pm » |
|
on Mar 8th, 2017, 7:10pm, Alincon wrote:But back to the title question: is a two-step process for choosing date components too cumbersome? |
|
I wouldn't say it's "cumbersome" but personally I think it could be improved by automatically presenting the second list, without the user having to click again:
Code: nomainwin
dim months$(12), days$(11)
for n = 1 to 12 : months$(n) = right$("0"+str$(n),2) : next
days$(1) = "01-10":days$(2) = "11-20":days$(3) = "21-31"
for n = 1 to 10 step 1: years$(n) = str$(n*10+1910)+"'s" : next
WindowWidth = 400 : WindowHeight = 400
statictext #student.statictext6, "Date of Birth", 100, 5, 99, 20
statictext #student.statictext7, "Mo Day Year", 70, 20, 160, 40
combobox #student.mocb, months$(,[mos],60,40,40,60
combobox #student.dacb, days$(,[days],107,40,50,50
combobox #student.yrcb, years$(,[years],165,40,60,300
open "Enter Date" for window as #student
#student, "font ms_sans_serif 8"
#student, "trapclose [studentEnd]"
wait
[studentEnd]
#student.mocb, "selection? mx$"
#student.dacb, "selection? dx$"
#student.yrcb, "selection? decade$"
notice mx$;" ";dx$;" ";decade$
close #student
end
[mos]
#student.mocb, "selection? mx$"
wait
[days]
#student.dacb, "selection? da$"
if instr(da$,"-") = 0 then wait
#student.dacb, "selectionindex? dx"
select dx
case 1 : m = 0 : p = 10
case 2 : m = 10 : p = 10
case 3 : m = 20 : p = 11
end select
for n = 1 to p
days$(n) = right$("0"+str$(n+m),2)
next
#student.dacb, "selectindex 0"
#student.dacb,"reload"
#student.dacb,"!";da$
hdacb = hwnd(#student.dacb)
calldll #user32, "SendMessageA", hdacb as ulong, _CB_SHOWDROPDOWN as long, _
1 as long, 0 as long, ret as void
wait
[years]
#student.yrcb,"selection? decade$"
if right$(decade$,1) <> "s" then wait
decade = val(left$(decade$,4))
for n = 1 to 10 :years$(n) = str$(decade+n-1):next
#student.yrcb, "selectindex 0"
#student.yrcb,"reload"
#student.yrcb,"!";decade$
hyrcb = hwnd(#student.yrcb)
calldll #user32, "SendMessageA", hyrcb as ulong, _CB_SHOWDROPDOWN as long, _
1 as long, 0 as long, ret as void
wait Richard.
|
|
Logged
|
|
|
|
Alincon
Full Member
member is offline
Posts: 147
|
|
Re: Is this a dumb idea?
« Reply #6 on: Mar 9th, 2017, 12:22am » |
|
Nice improvement. Thanks I didn't know the _CB_SHOWDROPDOWN call either.
r.m.
|
|
Logged
|
|
|
|
|