Alex,

I wanted the same sort of thing. What I decided was the best solution was to use a field instead of a button. I have just one "PopUp Menu" button that I load with the list and pop it up at the location of the field. Since everything is under the control of my PopUpParams script below, I could check for the contents of the choices and just skip the popup part if only one choice existed. I have not edited my script for your example, because you could do a better job of that than I could. I am sure you could modify it to work with buttons also.

Dennis


ON PopUpParams fieldParams1 --set a parameter field to the user selection
    local selected1,it
--fieldParams1 is a param list formatted as returned in ScreenParams() above --a popup menu is displayed on top of the field clicked on by the user -- a single popup button is used for everything by changing its menus --the selected entry is then placed into the field and saved in the set properties of the field
    --USAGE:
--called from a mouseDown handler in a locked field: PopUpParams priceParams(1)
    --
    #1 create the text for the popup menu btn
    --
    REPEAT for each line line1 in fieldParams1
        put item 1 of line1 &cr after it
    END repeat
    set the text of btn "PopUp Menu" to it
    #2 put the selection into the field
set the menuHistory of btn "PopUp Menu" to 2 --blank line, no change
    popup button "PopUp Menu" at bottomLeft of the target
    get the menuHistory of btn "PopUp Menu"
    put line it of fieldParams1 into selected1
    replace comma with cr in selected1
IF (selected1 <> empty) AND (selected1 <> the text of the target) AND (it<>2)
    THEN --changing settings
        put selected1 into the target
        get the short name of the target --e.g. SL5
        put "F" into char 2 of it --e.g. SF5
        IF exists( fld it )
        THEN --set the default value into the input field
            put line 6 of selected1 into fld it
            set the dataP[SetNum()] of fld it to fld it
        END if
        --
        IF line 7 of selected1 is not empty --color the text
THEN set the textColor of the target to item (line 7 of selected1) of colorListK
        IF line 8 of selected1 is not empty
THEN set the backColor of the target to item (line 8 of selected1) of colorListK
        --
        #3 save as current setting and pW[]
        set the dataP[SetNum()] of the target to selected1
    END if
    UpdateParams
END PopUpParams

FUNCTION PriceParams option1 --returns the parameters for all selected execution prices in the UI --option1 is an optional parameter which specifies additional sets of options are to be returned --if it is empty, the screens to be returned will be based on the indicator type function
    --USAGE:
--The user can select different execution prices in the list for initial and ending trades --The selected price name and the next items will be loaded into the field in separate lines --Only the first line will be visible, but all the other parameters will be saved as part of the set: -- Name,Screen#,MinValue,MaxValue,Decimals,Default,textcolor#,bkgColor# -- Price# identifies the option for switch cases, global array index, and priceList1.
    --  MinValue,MaxValue is for input checking
    --  Decimals is for formatting the field
    --  Default value for input field
    --  textColor#,bkgColor# is index into a list of colors
    --
    local list1
    get "Select Exe Price,0,0,0,0,,3,0,"&cr&cr
IF AlgorType()&option1 is among the items of "1100,1101,1110,1111,1990,1991" --all indicator types THEN put "510,511,512,513,514,515,516,517" into list1 --all execution prices (start trade) IF AlgorType()&option1 is among the items of "11001,11011,11101,11111,19901,19911" --all indicator types+stop THEN put "510,513,516,517" into list1 --execuution prices for stop trade
    --
IF 510 is among the items of list1 THEN get it&"D1Typ +,510,-. 50,.50,2,0,2,1," &cr --Use Typ tomarrow IF 511 is among the items of list1 THEN get it&"D0Typ +,511,-. 50,.50,2,0,2,1," &cr --Use Typ today IF 512 is among the items of list1 THEN get it&"IF D0Typ +,512,-. 50,.50,2,0,2,1," &cr --Use Typ today IF avail tomarrow IF 513 is among the items of list1 THEN get it&"IF D0Typ!D1C +, 513,-.50,.50,2,0,2,1," &cr --Use Typ today IF avail tomarrow else close IF 514 is among the items of list1 THEN get it&"D0Close +,514,-. 50,.50,2,0,2,1," &cr --Use close today IF 515 is among the items of list1 THEN get it&"IF D0Close +, 515,-.50,.50,2,0,2,1," &cr --Use close today IF avail tomarrow IF 516 is among the items of list1 THEN get it&"IF D0Close!D1C +, 516,-.50,.50,2,0,2,1," &cr --Use close today IF avail tomarrow else close IF 517 is among the items of list1 THEN get it&"D1Open +,517,-. 50,.50,2,0,2,1," &cr --Use open tomarrow
    return it
END PriceParams


On Jul 29, 2005, at 1:56 PM, Alex Tweedly wrote:


This cannot be as hard as I'm making it ..... so I'll follow the excellent advice from the list of not struggling over a simple issue for more than an hour and ask for help. Though I am about 4 hours late .... :-(

Easy bit:
I want to have a button, that acts like a pop-up button - i.e. when I click on it, up pops a list of choices and I can select one - or I can click outside the list of options and get a "cancel" indication back. When a choice is made, I do the appropriate action. This is what I get with a "pop-up menu" selected from the IDE's tool palette.

Hard part:
Sometimes, there is only one valid choice; in that case, I'd like to go ahead with the appropriate action immediately - don't present a menu, just do the action.

I can put in a handler for the mouseDown to the pop-up button - but can't find a way to avoid it popping up.

I tried putting in another button, and having its mouseDown take the action - either just doing it, or sending mouseDown to the pop- up button - but apparently; sending a mouseDown isn't enough to trigger the pop-up.

(I tried a large number of other things, but I'm not going to embarrass myself by listing them all ....)

Am I just missing some easy way ?

--
Alex Tweedly       http://www.tweedly.net



--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.9.6/59 - Release Date: 27/07/2005

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to