[Gambas-user] Creating a menu at runtime.(Solved sort of)

richard terry rterry at ...1946...
Sun Apr 26 05:02:30 CEST 2009


On Sun, 26 Apr 2009 12:22:51 pm richard terry wrote:
> Is it possible to create/add to a menu at runtime.
>
> If so, I wonder if anyone could give me an example.
>
> Regards
>
> Richard
>
> ---------------------------------------------------------------------------
>--- Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensign option that enables unlimited
> royalty-free distribution of the report engine for externally facing
> server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user

Answering myself, but perhaps someone can check this code and see if it is 
valid, or could improve it.

The object was to put a popup menu on the print button in my prescription 
writer, so that if I didn't want to send the script to the default printer I 
could right mouse click and get up a list, so this is what I did:

Public Sub Editor_SpecialButtons_Menu()
   Dim menu_item As Menu
   Dim hObs As Observer
   Dim Printer_name As String
  '------------------------------------------
  'Create a new menu on the fly
  '------------------------------------------
   Dim mnuPrinter As New Menu(Me)
 
 '----------------------------------------------------------------- 
  'Only do this at the moment in the script writer
  'and only on the print button
 '-----------------------------------------------------------------
  Select Case WorkspaceEditor.ActiveWindow.Tag
  Case "Scripts"
      Select Case Last.tag   'the buttons
         Case "print"

		'Get list of printers attatched to this machine
               MyApp.Printers_Get_Available()
               For Each Printer_name InMyApp.available_printers
                 '--------------------------------------------------
		 'make a menu item for each printer
		 '--------------------------------------------------
                  menu_item = New Menu(mnuPrinter)
                  With menu_item
                     .Caption = Printer_name 
                     .Tag = Printer_name
                     .Name = Printer_name 
                     hobs = New Observer(menu_item) As "mnuPrinter"
                  End With
             Next
             mnuPrinter.Popup()
               
      End Select
  End Select
 End


Public Sub mnuPrinter_Click()
  
  Print "in the new menu", Last.tag 
  
End

This seems to give the desired result, but is the code ok?

Regards

Richard




More information about the User mailing list