Seite 1 von 1
Menudefinition /Externe exklusiv starten,nur wenn Hauptfenst
Verfasst: 21.07.2005 15:36
von HoDam
Also Menudefinition hat funktioniert.
Ich bin da bei eine Toolbox zu erstellen, die einige Datenbankwerkzeuge enthält.
Ich möchte sozusagen eine Shell haben, von der ich die externen Programme abrufen kann. Möchte aber nicht , das die Programme für sich alleine funktionieren.
Wie kann ich einem Menupunkt ein externes Programm zuordnen oder auch Procedur.
Als Beispiel:
Ich starte ein Oberfläche, in der eine Datenbankabfrage erstellt ist.
Jetzt möchte ich einen Menupunkt haben der die Datenbank wechseln kann. Der Menupunkt exisitiert schon. Die Prozedur zum Datenbankwechsel auch .Der neue Pfad wird in eine INI-Datei weggeschrieben.
Ein zweite Procedur, die diese INI-Datrei ausliest und somit die Datenbank initilisieren kann.
Wie kann ich das jetzt das jetzt einem Menupunkt zuordnen.
Würde euch ja gerne weniger nerven, aber finde keine Literatur zu PureBasic und das Handbuch ist als Nachschlagewerk gut, aber zum erlernen eine Sprache nicht gerade didaktisch ein Hit. Und bei über 600 Befehlen verliert man schon mal die Übersicht.
Verfasst: 21.07.2005 15:49
von Batze
Langer Text, aber ich hab trotzdem nicht verstanden was du meinst.

Verfasst: 21.07.2005 16:41
von HoDam
Okay nochmal
Wie muss ich eine Procedur mit einem Menupunkt verknüpfen, so das er nur ausgeführt wird, wenn er auch angeklickt wird.
Gibts es zur Menuerstellung mehr Informationen als die Hilfestellung.
Danke
Verfasst: 21.07.2005 16:43
von bobobo
was reicht denn nicht an dem Beispiel in der Hilfe????
Verfasst: 22.07.2005 10:41
von HoDam
ich verstehe es nicht
wie ordne ich einem Menupunkt/Button ein Funktion (Procedure) zu.
z.B.
Menu
|
-- Test
Dem Menupunkt TEST möchte ich eine Procedure zuordnen
Bei LinksClick auf diesen Menüpunkt soll Procedure ausgeführt werden.
Dankeschön
Verfasst: 22.07.2005 11:24
von FGK
Veruch mal das durchzugehen.
Hoffe es hilft dir
Code: Alles auswählen
Procedure CreateMenu()
If CreateMenu(0, WindowID())
MenuTitle("Game")
MenuItem( 1, "&Restart")
MenuItem( 2, "&Skip Level")
MenuItem( 3, "&Exit")
MenuTitle("?")
MenuItem(4, "About")
EndIf
EndProcedure
If OpenWindow(0, 100, 200, 640,400,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_WindowCentered , "MenuDemo")
CreateMenu()
Repeat
EventID.l = WindowEvent()
Select EventID
Case #PB_EventMenu
Select EventMenuID()
Case 1 ; Menüpunkt: Restart Level
;Hier deine Procedure Restart Level aufrufen!
Case 2
;Hier deine Procedure aufrufen oder Code direkt schreiben! Case 3
;Exit Menüpunkt
Case 4
;About Menüpunkt
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End
Verfasst: 22.07.2005 11:49
von bobobo
Schau in die Eventloop bei select EventMenuID()
die verschiedenen case ergebnisse rufen die Procedure auf
Code: Alles auswählen
Procedure shutdown(flag)
Select flag
Case 0
MessageRequester("Procedure Meldung","Der Rechner wird nicht neugestartet weil das nur ein Demo ist",0)
Case 1
MessageRequester("Procedure Meldung","Der Rechner wird nicht heruntergefahren weil das nur ein Demo ist",0)
Case 2
MessageRequester("Procedure Meldung","Der Rechner wird nicht zusammengeknüllt weil das nur ein Demo ist",0)
Case 3
MessageRequester("Procedure Meldung","Der Rechner wird nicht aus dem Fenster geworfen weil das nur ein Demo ist",0)
Case 4
MessageRequester("Procedure Meldung","Das Programm wird beendet",0)
End
EndSelect
EndProcedure
If OpenWindow(0, 100, 150, 195, 260, #PB_Window_SystemMenu, "PureBasic - Menu")
If CreateMenu(0, WindowID())
MenuTitle("File")
MenuItem( 1, "&Load...")
MenuItem( 2, "Save")
MenuItem( 3, "Save As...")
MenuItem( 4, "Rechner &Neustarten")
MenuItem( 5, "Rechner &HerunterFahren")
MenuItem( 6, "Rechner &Zusammenknüllen")
MenuItem( 7, "Rechner &Entsorgen")
MenuItem( 8, "Programm per Procedure &verlassen")
MenuBar()
OpenSubMenu("Recents")
MenuItem( 9, "C:\Autoexec.bat")
MenuItem( 10, "D:\Test.txt")
OpenSubMenu("Even more !")
MenuItem( 11, "Test")
CloseSubMenu()
MenuItem( 12, "C:\Ok.bat")
CloseSubMenu()
MenuBar()
MenuItem( 13, "&Quit")
MenuTitle("Edition")
MenuItem( 14, "Cut")
MenuItem( 15, "Copy")
MenuItem(16, "Paste")
MenuTitle("?")
MenuItem(17, "About")
EndIf
DisableMenuItem(3, 1)
DisableMenuItem(16, 1)
;
; This is the 'event loop'. All the user actions are processed here.
; It's very easy to understand: when an action occurs, the EventID
; isn't 0 and we just have to see what have happened...
;
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
Select EventMenuID() ; To see which menu has been selected
Case 11 ; About
MessageRequester("About", "Cool Menu example", 0)
Case 4
shutdown(0)
Case 5
shutdown(1)
Case 6
shutdown(2)
Case 7
shutdown(3)
Case 8
shutdown(4)
Case 17
MessageRequester("About","DemoMenu",0)
Case 13
End
Default
MessageRequester("Info", "MenuItem: "+Str(EventMenuID()), 0)
EndSelect
Case #WM_CLOSE ; #PB_EventCloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End