I'm adding a menu to our printbutton. In this menu there are extra options to export the data. Since there are a lot of buttons in our application I would like to do the following.
Create a function which return an 'omenu'. See the code below.
Code: Select all
Function buttonprintmenu(oBrowse,_cTitel)
**************************************
Local  getlist := {} , oDlg , getoptions := {}
Local oPrintMenu
	DCSUBMENU oPrintMenu PROMPT 'Menu'
		DCMENUITEM 'Export to Screenreport' PARENT oPrintMenu ;
			ACTION {||ABO_printbrowse(oBrowse,.T.,.F.,_cTitel,'')} 
		DCMENUITEM 'Export to XLS' PARENT oPrintMenu ;
			ACTION {||ABO_printbrowse(oBrowse,.T.,.T.,_cTitel,'X')}  
			
		DCMENUITEM 'Export to PDF' PARENT oPrintMenu ;
			ACTION {||ABO_printbrowse(oBrowse,.T.,.T.,_cTitel,'P')}
			
	dcgetoptions NOTITLEBAR BORDER XBPDLG_DLGBORDER NOESCAPEKEY ;
             NOEDITNAVKEYS {|| .T. } FITPAD 1
		 
	dcread gui exit PARENT @oDlg FIT options getoptions
return oPrintMenu
Code: Select all
...
MENUACTION {|a,b,o,oPrintMenu|oPrintMenu:=buttonprintmenu(@oBrowse,''),oPrintMenu:PopUp( o:setParent(), o:currentPos(), 2 , ;
       XBPMENU_PU_DEFAULT + XBPMENU_PU_MOUSE_RBDOWN  ) } ;
My question about this is how about the dialog oDlg that is created in the buttonprintmenu function. When will this oDlg get destroyed, or how do I destroy this? Will this give a problem if a user has executed this a lot of times during the day.

 This way adding a menu to a lot of buttons is really an easy task.
 This way adding a menu to a lot of buttons is really an easy task.