PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » клик по меню верхнего уровня


клик по меню верхнего уровня

Сообщений 1 страница 8 из 8

1

Добрый день!
вопрос в следующем:
  CreateMenu(0, WindowID(#Window))
    MenuTitle("&Open...")
как обработать клик, если тыкнули в Open...?

Отредактировано amer (11.10.2022 20:18:21)

0

2

Код:
OpenWindow(0, 200, 200, 200, 100, "Menu Example")

CreateMenu(0, WindowID(0))
MenuItem(0, "Open")
MenuTitle("Project")
MenuItem(1, "Open"   +Chr(9)+"Ctrl+O")
MenuItem(2, "Save"   +Chr(9)+"Ctrl+S")
MenuItem(3, "Save as"+Chr(9)+"Ctrl+A")
MenuItem(4, "Close"  +Chr(9)+"Ctrl+C")

Repeat 
  Event = WaitWindowEvent()
  
  If Event = #PB_Event_Menu
    Debug EventMenu()
  EndIf
  
Until Event=#PB_Event_CloseWindow

0

3

спасибо, в винде работает , а вот под кедами - отказывается (
[22:46:30] Waiting for executable to start...
[22:46:30] Executable type: Linux - x64  (64bit, Unicode)
[22:46:30] Executable started.
[22:46:30] [WARNING] Line: 4
[22:46:30] [WARNING] Gtk (CRITICAL): gtk_menu_shell_insert: assertion 'GTK_IS_MENU_SHELL (menu_shell)' failed
[22:47:33] The Program execution has finished.

0

4

Может линукс такое не поддерживает?
Попробуйте запустить этот код

Код:
OpenWindow(0,200,200,300,200,"Menu",#PB_Window_SystemMenu) 

If CreateMenu(0, WindowID(0)) 

    OpenSubMenu("File") 
      MenuItem(01,"New") 
      MenuItem(02,"Open") 
      MenuBar() 
      MenuItem(03,"eXit") 
    CloseSubMenu() 

    OpenSubMenu("Edit") 
      MenuItem(11,"Cut") 
      MenuItem(12,"Copy") 
      MenuItem(13,"Paste") 
    CloseSubMenu() 

    MenuItem( 20, "Menu 3") 
    MenuItem( 21, "Menu 4") 
    MenuItem( 22, "Menu 5") 
    MenuItem( 24, "About") 

EndIf 

  
Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_Menu 
      Select EventMenu()  ; To see which menu has been selected 
        Case  3 ; eXit 
          End 
        Case 24 ; About 
          MessageRequester("ABOUT","Mein Programm, (c) 1923 bei Zonk!",0) 
        Default 
          MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0) 
      EndSelect 
    Case #PB_Event_CloseWindow 
      End 
  EndSelect 
ForEver 

Еще можно попробовать подсистемы GTK2 и QT.

0

5

Спасибо, Пётр!
не работает, а каким образом QT задействовать?

0

6

amer написал(а):

Спасибо, Пётр!
не работает, а каким образом QT задействовать?

В меню "Компилятор -> Настройки компилятора ..." есть поле "Библиотека подсистемы", там указать qt или GTK2.

Для интереса, а мои проги  на кедах работают? Там во многих есть меню, смотрите Synchronization или RegExp, там есть выпадающие меню на кнопках. Если не работает, то может проблема в ОС? Какая ОС? У меня Минт, арч, федора, Xubuntu, EndeavourOS с оболочками хфсе, Cinnamon, везде меню работает. Кстати кеды есть в арче второй оболочкой для пробы, могу проверить. Проверил (кде-плазма), меню нормально работает.

Проверил примеры Петра, первый работает, второй вообще не отображает меню, а в коде предупреждения жёлтым цветом в начале строки с восклицательным знаком. Если во втором примере добавить строку MenuTitle("Project") после CreateMenu(), то меню появляется.

Отредактировано AZJIO (12.10.2022 09:47:31)

0

7

AZJIO

Операционная система: Kubuntu 22.04
Версия KDE Plasma: 5.24.6
Версия KDE Frameworks: 5.92.0
Версия Qt: 5.15.3
Версия ядра: 5.15.0-48-generic (64-бита)
Графическая платформа: X11
Процессоры: 4 × Intel® Core™ i5-3570 CPU @ 3.40GHz
Память: 23,4 ГиБ ОЗУ
Графический процессор: NVE7

потыкал в твои проги (деб пакеты не устанавливал, запускал из пурика) - почти все запускаются и возможно работают (сильно проверять времени нет), например куему у меня не установлен, прога создания фстаба, не понял куда она его записывать будет (исходник не изучал), в етц? так там же права нужны, а со старым, что будет?...

0

8

amer
Для версии 22.04 лучше компилировать проги, а не устанавливать, так как я собирал на версии 19. У меня есть 22 на другом компе, но нет желания активно тестировать, а на своей я пользуюсь программами и они отлично работают.

На счёт fstab, надо кнопку поменять на "Создать в буфер" или посказку, а то действительно никто не хотел бы рисковать. На самом деле вылетает сообщение с результатом и он ещё отправляется в буфер обмена. На форуме арч как всегда сразу всё в штыки, типа fstab это пережиток прошлого сейчас через какие то юниты добавляются. В общем для меня это упрощает кучу телодвижений.

Отредактировано AZJIO (12.10.2022 19:00:52)

0

Похожие темы


Вы здесь » PureBasic - форум » Вопросы по PureBasic » клик по меню верхнего уровня