Seperator in popupmenu

Just starting out? Need help? Post your questions and find answers here.
User avatar
ssg_mick
User
User
Posts: 10
Joined: Thu Oct 26, 2017 12:13 pm

Seperator in popupmenu

Post by ssg_mick »

Hi,

i have a popupmenu containing 2 seperators.

Code: Select all

Procedure createContactPopupMenu()
  ContactPopupMenu = CreatePopupMenu(#PB_Any) 
  MenuItem(101, LANG_ShowCustomer.s)
  MenuItem(103, LANG_ShowNotes.s)
  MenuItem(104, LANG_ShowEmails.s)
  MenuItem(105, LANG_ShowTasks.s)
  MenuItem(106, LANG_ShowBranches.s)
  MenuItem(107, LANG_ShowOrders.s)
  MenuBar()
  MenuItem(109, LANG_CreateNote.s)
  MenuItem(110, LANG_CreateEmail.s)
  MenuItem(111, LANG_CreateTask.s)
  MenuItem(112, LANG_CreateBranch.s)
  MenuItem(113, LANG_CreateOrder.s)
  MenuBar()
  MenuItem(114, LANG_PhoneCall.s)
EndProcedure
But when i run my code, i get 3 seperators instead of one for every MenuBar().
Michael

Windows 10, PureBasic 5.70 LTS
User avatar
skywalk
Addict
Addict
Posts: 3972
Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA

Re: Seperator in popupmenu

Post by skywalk »

Gap in your MenuItem() numbers? 102,108?
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum
wombats
Enthusiast
Enthusiast
Posts: 663
Joined: Thu Dec 29, 2011 5:03 pm

Re: Seperator in popupmenu

Post by wombats »

The menu creation code you posted seems to work fine for me.

How are you using the createContactPopupMenu() function in your project? Are you recreating the menu each time it needs to be shown? Maybe you need to free it before recreating it.
Marc56us
Addict
Addict
Posts: 1477
Joined: Sat Feb 08, 2014 3:26 pm

Re: Seperator in popupmenu

Post by Marc56us »

This can happen if one of the character strings (menu text) is empty.

ie: if LANG_PhoneCall.s = ""

:wink:

PS. Avoid using direct numbers as gadget ID, always use name or constant
User avatar
ssg_mick
User
User
Posts: 10
Joined: Thu Oct 26, 2017 12:13 pm

Re: Seperator in popupmenu

Post by ssg_mick »

wombats wrote:The menu creation code you posted seems to work fine for me.

How are you using the createContactPopupMenu() function in your project? Are you recreating the menu each time it needs to be shown? Maybe you need to free it before recreating it.
Yes, i create the PopupMenu every time when it should be shown. I wanted to try FreeGadget(ContactPopupMenu), but this only works, when it exists. How can i check, if a Gadget exists?
Michael

Windows 10, PureBasic 5.70 LTS
davido
Addict
Addict
Posts: 1890
Joined: Fri Nov 09, 2012 11:04 pm
Location: Uttoxeter, UK

Re: Seperator in popupmenu

Post by davido »

@ssg_mick,
May I suggest you look at: IsGadget().
Or, perhaps: IsMenu().
DE AA EB
User avatar
ssg_mick
User
User
Posts: 10
Joined: Thu Oct 26, 2017 12:13 pm

Re: Seperator in popupmenu

Post by ssg_mick »

I tried this:

Code: Select all

 If IsGadget(#CustomerPopupMenu)
    FreeGadget(#CustomerPopupMenu)
  EndIf
but this did not solve the Problem.
Michael

Windows 10, PureBasic 5.70 LTS
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4637
Joined: Sun Apr 12, 2009 6:27 am

Re: Seperator in popupmenu

Post by RASHAD »

Code: Select all

Global ContactPopupMenu

Procedure createContactPopupMenu()
  If IsMenu(ContactPopupMenu)
    FreeMenu(ContactPopupMenu)
  EndIf
  ContactPopupMenu = CreatePopupMenu(#PB_Any)
  MenuItem(101, LANG_ShowCustomer.s)
  MenuItem(103, LANG_ShowNotes.s)
  MenuItem(104, LANG_ShowEmails.s)
  MenuItem(105, LANG_ShowTasks.s)
  MenuItem(106, LANG_ShowBranches.s)
  MenuItem(107, LANG_ShowOrders.s)
  MenuBar()
  MenuItem(109, LANG_CreateNote.s)
  MenuItem(110, LANG_CreateEmail.s)
  MenuItem(111, LANG_CreateTask.s)
  MenuItem(112, LANG_CreateBranch.s)
  MenuItem(113, LANG_CreateOrder.s)
  MenuBar()
  MenuItem(114, LANG_PhoneCall.s)
EndProcedure
Egypt my love
User avatar
ssg_mick
User
User
Posts: 10
Joined: Thu Oct 26, 2017 12:13 pm

Re: Seperator in popupmenu

Post by ssg_mick »

Marc56us wrote:This can happen if one of the character strings (menu text) is empty.

ie: if LANG_PhoneCall.s = ""

:wink:

PS. Avoid using direct numbers as gadget ID, always use name or constant
This was my fault...

I had 2 MenuItems with empty Text$:

Code: Select all

Procedure createCustomerPopupMenu() 
  If CreatePopupMenu(#CustomerPopupMenu)
    MenuItem(#PopupMenuItemShowContacts, LANG_ShowContacts.s)
    MenuItem(#PopupMenuItemShowNotes, LANG_ShowNotes.s)
    MenuItem(#PopupMenuItemShowEmails, LANG_ShowEmails.s)
    MenuItem(#PopupMenuItemShowTasks, LANG_ShowTasks.s)
    ;MenuItem(#PopupMenuItemShowBranches, LANG_ShowBranches.s)
    ;MenuItem(#PopupMenuItemShowOrders, LANG_ShowOrders.s)
    MenuBar()
    MenuItem(#PopupMenuItemCreateContact, LANG_CreateContact.s)
    MenuItem(#PopupMenuItemCreateNote, LANG_CreateNote.s)
    MenuItem(#PopupMenuItemCreateEmail, LANG_CreateEmail.s)
    MenuItem(#PopupMenuItemCreateTask, LANG_CreateTask.s)
    ;MenuItem(#PopupMenuItemCreateBranch, LANG_CreateBranch.s)
    ;MenuItem(#PopupMenuItemCreateOrder, LANG_CreateOrder.s)
    MenuBar()
    MenuItem(#PopupMenuItemPhoneCall, LANG_PhoneCall.s)
  EndIf 
EndProcedure
Thanks all for your help and ideas.
Michael

Windows 10, PureBasic 5.70 LTS
Post Reply