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 :lol:

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