[wxmax] Menubar aus eigener Klasse erzeugen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

BlueM

Betreff: [wxmax] Menubar aus eigener Klasse erzeugen

BeitragFr, Apr 29, 2011 10:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wieso geht das hier nicht :

Code: [AUSKLAPPEN]

Import wx.wxApp
Import wx.wxFrame
Import wx.wxMenu
Import wx.wxMenuBar

Strict

Type MyApp Extends wxApp
   
   Method OnInit:Int()
      Local a:UI = UI( New UI.Create(Null,wxID_any,"blabla"))
      Return True
   End Method
   
End Type

Type UI Extends wxFrame

   Field menu:MenuBar_

   Method OnInit:Int()
      menu = MenuBar_(New MenuBar_.Create())
      SetMenuBar(menu)
      
      Centre
      Show(True)
      Return True
   End Method
   
End Type

Type MenuBar_ Extends wxMenuBar

   Field menu_file:wxMenu
   Field menu_exit:wxMenuItem

   Method OnInit:Int()
      menu_file = New wxMenu.Create()
      menu_exit = New wxMenuItem.Create(menu_file,1,"Beenden")
      menu_file.AppendItem(menu_exit)
      
      Append(menu_file,"File")

      return True
   End Method

End Type

New MyApp.Run()


wenn ich allerdings die MenuBar_ KLasse entferne und alles in die OnInit Methode des wxframe stecke geht es. Wäre aber schön, wenn man aus Gründen der Übersichtlichkeit eine extra KLasse nutzen könnte.
Danke für eure Hilfe

EDIT:

Ich habe jetzt überlegt das man aus der wxMenuBar Klasse auch eine wxMenu Klasse machen könnte.
So müsste man zwar für jedes Menü eine extra Klasse erzeugen, aber so würde es auch gehen.

Code: [AUSKLAPPEN]

Import wx.wxApp
Import wx.wxFrame
Import wx.wxMenu
Import wx.wxMenuBar

Strict

Type MyApp Extends wxApp
   
   Method OnInit:Int()
      Local a:UI = UI( New UI.Create(Null,wxID_any,"blabla"))
      Return True
   End Method
   
End Type

Type UI Extends wxFrame

   Field menu:wxMenu
   Field menubar:wxMenuBar

   Method OnInit:Int()
      menu = MenuBar_(New MenuBar_.Create())
      
      menubar = New wxMenuBar.Create()
      menubar.Append(menu,"File")
      Connect(1,wxEVT_COMMAND_MENU_SELECTED,OnExit)
      
      SetMenuBar(menubar)
      
      Centre
      Show(True)
      Return True
   End Method
   
   Function OnExit(event:wxEvent)
      Self(event.parent).Close(True)
   End Function
   
End Type

Type MenuBar_ Extends wxMenu

   Field menu_exit:wxMenuItem

   Method OnInit:Int()
      
      menu_exit = New wxMenuItem.Create(Self,1,"Beenden")
      AppendItem(menu_exit)
      
      Return True
   End Method

End Type
New MyApp.Run()


Trotzdem wäre es interessant ob man das ursprüngliche Problem lösen könnte.
So muss los.

FireballFlame

BeitragFr, Apr 29, 2011 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, die wxMenuBar hat kein OnInit... zumindest wird es in deinem Code nicht aufgerufen.

Ich würde dafür aber gleich den wxFormBuilder benutzen, dann sparst du dir den ganzen GUI-Erzeugungscode.
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group