Page 3 of 3
Re: Hierarchical pop-up Combo Gadget
Posted: Mon Sep 06, 2010 4:23 pm
by TomS
zapman* wrote:I've updated my code
Less (no) work for me
Why did add the second parameter to your open/close-submenu-procedure?
You could add the submenu
after you added all the 'toplevel' entries, but who does this?
At least make it optional
Code: Select all
Procedure OpenSubMenu_CBM(iGadgetID,ItemIndex = -1)
;- Added these 3 lines
If ItemIndex = -1
ItemIndex = CountGadgetItems(iGadgetID)-1
EndIf
;.....
vReturn = 0
actualValue = SendMessage_(GadgetID(iGadgetID),#CB_GETITEMDATA,ItemIndex,0)
If actualValue<>#CB_ERR
actualValue|1
If SendMessage_(GadgetID(iGadgetID),#CB_SETITEMDATA,ItemIndex,actualValue)<>#CB_ERR
vReturn = 1
EndIf
EndIf
ProcedureReturn vReturn
EndProcedure
Re: Hierarchical pop-up Combo Gadget
Posted: Tue Sep 07, 2010 2:24 am
by zapman*
Excellent!
Go one step beyond offering an "OpenSubMenu" similare to the one used with classical popup menu:
Code: Select all
Procedure OpenSubMenu_CBM(iGadgetID,ItemIndex=-1,Text$="_NoText_")
;
If Text$<>"_NoText_"
AddGadgetItem(iGadgetID, ItemIndex,Text$)
EndIf
;
If ItemIndex = -1
ItemIndex = CountGadgetItems(iGadgetID)-1
EndIf
;
vReturn = 0
actualValue = SendMessage_(GadgetID(iGadgetID),#CB_GETITEMDATA,ItemIndex,0)
If actualValue<>#CB_ERR
actualValue|1
If SendMessage_(GadgetID(iGadgetID),#CB_SETITEMDATA,ItemIndex,actualValue)<>#CB_ERR
vReturn = 1
EndIf
EndIf
ProcedureReturn vReturn
EndProcedure
OpenSubMenu_CBM(GadgetID,-1,"Line")
- Add the line "Line" in the list as a submenu title
OpenSubMenu_CBM(GadgetID)
- Transform the last added line to a submenu title
OpenSubMenu_CBM(GadgetID,5)
- Transform the line indexed "5" to a submenu title
OpenSubMenu_CBM(GadgetID,5,"Line")
- Insert "Line" at position "5" in the list and transform it to a submenu title