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