Menu verstecken

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Pebender

Betreff: Menu verstecken

BeitragMi, Feb 01, 2017 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe eine Menüleiste erstellt mit einigen Einträgen, nun möchte ich einzelne Einträge deaktivieren.

Code: [AUSKLAPPEN]
ADMmenu=CreateMenu("&Admin",0,WindowMenu(window))
CreateMenu "Admin anle&gen",MENU_ADMan,ADMmenu,KEY_G,MODIFIER_COMMAND
CreateMenu "A&dmin bearbeiten",MENU_ADMbe,ADMmenu,KEY_D,MODIFIER_COMMAND


Ich habe es so probiert

Code: [AUSKLAPPEN]
 DisableGadget (ADMmenu)


was im Prinzip auch funktioniert, dann ist aber das ganze Menü deaktiviert.

Wie deaktiviere ich denn die Einträge, wenn ich es mit Disablemenu probiere, bekomme ich eine Fehlermeldung, das er INT nicht zu TGADGET konvertieren kann.

mfg
BMax & MaxGUI

Xeres

Moderator

BeitragMi, Feb 01, 2017 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde drauf tippen, dass du die Rückgabewerte von dem 2. und 3. CreateMenu verwenden musst - das sind doch die Menüeinträge?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Pebender

BeitragMi, Feb 01, 2017 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ja da hast du Recht. Habe ich aber auch schon probiert ohne Erfolg dann bekomme ich ja die oben genannte Fehlermeldung.
Mit DisableMenu funktioniert es auch nicht. Aber danke dir für die Hilfe, ist wahrscheinlich ein AnfängerFehler. Das bekomme ich schon irgendwie hin.

Mfh
BMax & MaxGUI

Xeres

Moderator

BeitragMi, Feb 01, 2017 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum wird da Int anstatt TGadget benutzt?
Entweder du benutzt kein Strict oder du hast die runden Klammern bei den Funktionsaufrufen weggelassen und bekommst deshalb keinen richtigen Rückgabewert.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

FireballFlame

Betreff: Re: Menu verstecken

BeitragDo, Feb 02, 2017 5:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Pebender hat Folgendes geschrieben:
Wie deaktiviere ich denn die Einträge
Indem du die Einträge in einer Variablen speicherst (das hast du scheinbar nur beim übergeordneten Menü getan) und dann einfach DisableMenu damit aufrufst. Wo die Fehlermeldung mit dem "Int" herkommt, weiß ich nicht, aber du musst da irgendwas anderes gemacht haben.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Pebender

BeitragDo, Feb 02, 2017 8:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke füe eure Hilfe, vielleicht soll es mal so zeigen:

PseudoCode:

Code: [AUSKLAPPEN]

Global ADMmenu:TGadget         'Admin Menü (Hauptmenü)
Const MENU_ADMan=125                        'Untermenü, im Hauptmenü Admin, das deaktiviert werden soll

ADMmenu=CreateMenu("&Admin",0,WindowMenu(window))              'Hauptmenü Admin erstellen
CreateMenu "Admin anle&gen",MENU_ADMan,ADMmenu,KEY_G,MODIFIER_COMMAND       'Untermenü erstellen

If  FileType(AppDir+"\Datenbank\admin.db")      'Überprüfung der Datei auf Existenz
 DisableMenu (ADM_ADMan)                                        'wenn die Datei existiert, Eintrag deaktivieren
EndIf

UpdateWindowMenu window



und irgendwo habe ich einen Denkfehler....

mfg
BMax & MaxGUI

FireballFlame

BeitragDo, Feb 02, 2017 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, der liegt darin, dass du versuchst ADM_ADMan zu disablen, und das ist kein Menü sondern die Zahl 125.
Du musst bei DisableMenu das ensprechende Menü (d.h. das TGadget) angeben, und das bekommst du von CreateMenu zurückgegeben.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Midimaster

BeitragDo, Feb 02, 2017 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Also... Jeder Menüeintrag benötigt eine eigene Variable vom Typ TGadget. Bei mir löse ich das mit einem Array.
Durch die Definition der Konstanten erreiche ich, das die Menu-Eintrage im Code so "heißen", wie im Menü.

Durch direktes Ansprechen eines solchen Array-Eintrags kann ich nun einzelne Menüs ein-/ausschalten. Ebenso kann ich die Check-Haken setzen:
BlitzMax: [AUSKLAPPEN]
Type MDI
Global Menus:Tgadget[70]

Const MENU_FILE%=1 , MENU_OPTI%=2
Const MENU_EXIT%=15 ,MENU_OPEN%=10, MENU_ADMIN%=11
Const MENU_ABOUT%=21 , MENU_HELP%=23
Function FormLoad()
Window= CreateWindow("Test" , 100 , 100 , 800 , 600 , Null , Flags%)
Menus[MENU_FILE] = CreateMenu("File ",0,WindowMenu(Window))
Menus[MENU_OPEN] = CreateMenu ("Open" , MENU_OPEN , Menus[MENU_FILE],0,0)
Menus[MENU_ADMIN] = CreateMenu ("Admin anle&gen" , MENU_CREATE , Menus[MENU_FILE],0,0)
CreateMenu "" , 0 , Menus[MENU_FILE] ,0,0
Menus[MENU_EXIT] = CreateMenu ("Exit" , MENU_EXIT , Menus[MENU_FILE] ,0,0 )
Menus[MENU_OPTI] = CreateMenu("Options ",0,WindowMenu(Window))
Menus[MENU_ABOUT]= CreateMenu( "Info about" , MENU_ABOUT , Menus[MENU_OPTI] ,0,0 )
Menus[MENU_PARA]= CreateMenu( "Parameter" , MENU_PARA , Menus[MENU_OPTI] ,0,0 )
Menus[MENU_HELP]= CreateMenu( "Help" , MENU_HELP , Menus[MENU_OPTI] ,0,0 )

DisableMenu Menus[MENU_ABOUT]
CheckMenu Menus[MENU_PARA]

....

If FileType(AppDir+"\Datenbank\admin.db")
DisableMenu Menus[MENU_ADMIN]
EndIf


Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Pebender

BeitragDo, Feb 02, 2017 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Midimaster,

ich habe das jetzt so gemacht

anstatt:
Code: [AUSKLAPPEN]
CreateMenu "Admin anle&gen",MENU_ADMan,ADMmenu,KEY_G,MODIFIER_COMMAND       'Untermenü erstellen


habe ich

Code: [AUSKLAPPEN]
MENU_ADMan=CreateMenu ("Admin anle&gen",0,ADMmenu,KEY_G,MODIFIER_COMMAND)


gemacht, nun funktioniert es soweit, nun muss ich es nur noch in das richtige Event packen.
BMax & MaxGUI

Midimaster

BeitragDo, Feb 02, 2017 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]

While WaitEvent()
Select EventID()
Case EVENT_KEYDOWN

Case EVENT_KEYUP

Case EVENT_TIMERTICK
TimerTickt()

Case EVENT_GADGETPAINT
Malen

Case EVENT_WINDOWCLOSE

Case EVENT_APPTERMINATE
ProgrammBeenden

Case EVENT_MENUACTION
MenuAction EventData()


.....
Function MenuAction(Event%)
Print "EVENT=" + Event
Select Event
Case MENU_EXIT
ProgrammBeenden
Case MENU_HELP
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Pebender

BeitragFr, Feb 03, 2017 8:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo und Danke,

@Midimaster,

ich habe das jetzt auf deine Art und Weise umgebastelt, jetzt funktioniert es auch.

mfg
BMax & MaxGUI

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group