Is there a way to input a multi-selection-checkbox of arbitrary length? (SOLVED) - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Is there a way to input a multi-selection-checkbox of arbitrary length? (SOLVED) (/thread-5098.html) |
Is there a way to input a multi-selection-checkbox of arbitrary length? (SOLVED) - StephenG1CMZ - 11-09-2015 06:08 PM In CHOOSE, I can choose just one from an arbitrary list using: ASTEROIDS:={"1", "2",..." n"}; CHOOSE(CHS,"",ASTEROIDS); But what I want is to able to select more than one, so that I could select several for plotting. INPUT allows multiple items to be selected from check boxes, but the help seems to assume you know how many check boxes you have, and each is associated with a variable. Using a list variable with check boxes compiles, but gives a run time error: Code:
Is there a way to do this with a list? The output could either be a list of the same size as ASTEROIDS, populated with true and false... Or a smaller list containing just those which have been selected/unselected. If this cannot be done, could the functionality be added, either to INPUT or CHOOSE? RE: Is there a way to input a multi-selection-checkbox of arbitrary length? - StephenG1CMZ - 11-10-2015 05:04 PM I now have a syntax which generates the user interface I was aiming for... but so far I am entering each list elements manually... I'm hoping this can be simplified to simply use the whole list Code:
RE: Is there a way to input a multi-selection-checkbox of arbitrary length? - cyrille de brébisson - 11-11-2015 06:42 AM Hello, So, what you are really looking for is a way to programaticaly create your variable list, both for storing the values AND for the INPUT command... Why not try: EXPORT BS() BEGIN LOCAL COMETS:={"ALL","Halley","Lewkowicz","The rest"}; LOCAL LST:=MAKELIST(0,I,1,SIZE(COMETS)); LOCAL OKC,UTP; LOCAL TTL:={"//"}; LOCAL HLP:="HH"; local l2= MAKELIST({'LST(I)',1},I,1,SIZE(COMETS)); OKC:=EVAL(EXPR("INPUT("+STRING(l2)+",TTL(1),COMETS,HLP,1,1)")); END; The INPUT command needs both the NAME of the variable and their values... This is why INPUT does NOT evaluate its first parameter, if it did evaluate it, then it would NOT be able to get the variable name that it needs... As a result, it is NOT possible to use a programmatic way/method to generate that first parameter, because recalling it, is an evaluation, which does not happen... Hence the use of a string there to generate the TEXT of the INPUT statement and then the conversion from text to an expression, which is then evaluated... Cyrille RE: Is there a way to input a multi-selection-checkbox of arbitrary length? - StephenG1CMZ - 11-11-2015 09:09 AM (11-11-2015 06:42 AM)cyrille de brébisson Wrote: Hello,That looks right, but there is something wrong with the MAKELIST... It generates LST1...LST1... for some reason. If that is manually changed to LST1...LST2... Then LST has the desired output. Code: EXPORT BS() RE: Is there a way to input a multi-selection-checkbox of arbitrary length? - StephenG1CMZ - 11-11-2015 07:02 PM I don't understand why that 2nd MAKELIST didn't generate LST(1...LST(2 But since the INPUT turns list l2 into a string, that MAKELIST isn't needed: one can make the required string directly. This code seems to achieve what I was looking for: Code:
RE: Is there a way to input a multi-selection-checkbox of arbitrary length? - cyrille de brébisson - 11-12-2015 06:57 AM Hello, Yes, indeed the 2nd MAKELIST does do something strange... But yes, the workaround is, as you stated to make the string directly... Cyrille RE: Is there a way to input a multi-selection-checkbox of arbitrary length? (SOLVED) - StephenG1CMZ - 08-23-2018 09:58 PM That example code has been re-worked into a callable function here http://www.hpmuseum.org/forum/thread-11190-post-102562.html#pid102562 Where several alternative solutions are also presented. |