wxWidgets - Frames?
Übersicht

![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst du mal den Code zeigen, also nur von der GUI-Erstellung.
Ich habe nämlich das Problem, dass ein Fehler Unable to convert from 'wx.wxwindow.wxBoxSizer' to 'wxWindow' kommt wenn ich versuche einem Sizer einen anderen als Child anzuhängen. Siehe http://www.blitzbasic.com/Comm...927#840008 |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für deine Erklärung Vertex.
Bekomme es allerdings noch nicht ganz so hin, wie ich es will. Habe nun z.B. 1 Frame, darin ein BoxSizer, in dem Sizer wiederrum ein Panel und in dem Panel muss wieder ein Sizer rein. Der letzte Sizer macht mir aber Probleme. Wenn ich da z.B. einen BoxSizer nehme, kann ich den Button entweder nur Horizontal oder nur Vertikal ausrichten, beides geht nicht. Wenn ich einen GridSizer nehme, geht der Button (welcher Rechtsbündig sein soll) nur bis zur Mitte. Ist also in der linken Hälfte von dem GridSizer, welcher scheinbar automatisch aus 2 Teilen besteht. Muss also erst wohl wieder noch irgendein Objekt in dem GridSizer erstellen, bevor ich den Button da haben kann, wo er sein soll, in der rechten unteren Ecke... ![]() Ich glaube ich nehme doch lieber wieder normale Koordinaten, irgendwie... ![]() Edit: Uh, wenn ich den GridSizer auf 1 row und col stelle, geht es. Mal schauen, wie ich es dann mit mehreren Objekten hinbekomme ![]() Edit2: z.B. bei 2 Buttons, die unten rechts nebeneinander sein sollen... ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Artemis:
Wenn du einem Control einen Sizer zuweisen willst, bspw. einem Panel nimmst du MyPanel.SetSizer(MySizer) willst du hingegen einem Sizer einen verschachtelten Sizer hinzufügen nimmst du OuterSizer.AddSizer(InnerSizer,,,5) Ansonsten hier der aktuelle Code vom Config Editor: Code: [AUSKLAPPEN] SuperStrict
Framework BRL.Blitz Import wx.wx Import wx.wxApp Import wx.wxFrame Import wx.wxMenu Import wx.wxComboBox Import wx.wxCheckBox Import wx.wxChoice Import wx.wxStaticText Import wx.wxPanel Import wx.wxSlider Import wx.wxStaticBox Global RendererList : String[2], .. ColorDepthList : String[3], .. ScreenFrequencyList : String[2], .. AudioOutputDeviceList : String[2], .. CaptureDeviceList : String[2] RendererList[0] = "OpenGL" RendererList[1] = "Direct3D7" ColorDepthList[0] = "16 Bit" ColorDepthList[1] = "24 Bit" ColorDepthList[2] = "32 Bit" ScreenFrequencyList[0] = "59 Hz" ScreenFrequencyList[1] = "60 Hz" AudioOutputDeviceList[0] = "Generic Hardware" AudioOutputDeviceList[1] = "Generic Software" CaptureDeviceList[0] = "Logitech-Mikrofon (Web)" CaptureDeviceList[1] = "SoundMAX Digital Audio" Local Application : TApplication Application = New TApplication Application.Run() Type TApplication Extends wxApp Field Configuration : TConfiguration Method OnInit:Int() Self.Configuration = New TConfiguration Configuration.Create(,,"SingFever Config",,,,, .. wxCAPTION .. | wxCLOSE_BOX .. | wxMINIMIZE_BOX .. | wxSYSTEM_MENU .. | wxTAB_TRAVERSAL) SetTopWindow(Self.Configuration) Self.Configuration.Show() Return True End Method End Type Type TConfiguration Extends wxFrame Field MenuMain : wxMenuBar Field MenuFile : wxMenu Field MenuLoad : wxMenu Field MenuSave : wxMenu Field MenuDefault : wxMenu Field MenuExit : wxMenu Field MenuHelp : wxMenu Field MenuAbout : wxMenu Field LabelVideoSettings : wxStaticText Field PanelVideoSettings : wxPanel Field LabelRenderer : wxStaticText Field ComboRenderer : wxComboBox Field CheckFullscreen : wxCheckBox Field LabelColorDepth : wxStaticText Field ChoiceColorDepth : wxChoice Field LabelScreenFrequency : wxStaticText Field ChoiceScreenFrequency : wxChoice Field LabelAudioSettings : wxStaticText Field PanelAudioSettings : wxPanel Field LabelAudioOutputDevice : wxStaticText Field ComboAudioOutputDevice : wxComboBox Field LabelSoundVolume : wxStaticText Field SliderSoundVolume : wxSlider Field LabelMusicVolume : wxStaticText Field SliderMusicVolume : wxSlider Field LabelRecorderSettings : wxStaticText Field PanelRecorderSettings : wxPanel Field LabelCaptureDevice : wxStaticText Field ComboCaptureDevice : wxComboBox Field LabelThreshold : wxStaticText Field SliderThreshold : wxSlider Field LabelNoiseFilter : wxStaticText Field SliderNoiseFilter : wxSlider Field LabelBoost : wxStaticText Field SliderBoost : wxSlider Field CheckSaveToHardDisk : wxCheckBox Field LabelOscilloscope : wxStaticText Field BoxOscilloscope : wxStaticBox Field LabelAutocorrelation : wxStaticText Field BoxAutocorrelation : wxStaticBox Method OnInit() ' Menu MenuMain = wxMenuBar.CreateMenuBar(0) MenuFile = wxMenu.CreateMenu() MenuHelp = wxMenu.CreateMenu() MenuFile.Append(-1, "Load") MenuFile.Append(-1, "Save") MenuFile.Append(-1, "Default settings") MenuFile.AppendSeparator() MenuFile.Append(-1, "Exit") MenuHelp.Append(-1, "About") MenuMain.Append(MenuFile, "File") MenuMain.Append(MenuHelp, "Help") Self.SetMenuBar(MenuMain) Local SizerMain : wxBoxSizer SizerMain = wxBoxSizer.CreateBoxSizer(wxVERTICAL) ' Video settings LabelVideoSettings = wxStaticText.CreateStaticText(Self, wxID_ANY, "Video settings") LabelVideoSettings.SetFont(.. wxFont.CreateFontWithAttributes(-1, .. wxFONTFAMILY_DEFAULT, .. wxFONTSTYLE_NORMAL, .. wxFONTWEIGHT_BOLD) .. ) LabelVideoSettings.SetForegroundColour(.. wxColour.CreateColour(255, 255, 255).. ) SizerMain.Add(LabelVideoSettings, 0, wxALL, 4) PanelVideoSettings = wxPanel.CreatePanel(Self, wxID_ANY) Local SizerVideoSettings : wxBoxSizer SizerVideoSettings = wxBoxSizer.CreateBoxSizer(wxVERTICAL) LabelRenderer = wxStaticText.CreateStaticText(PanelVideoSettings, wxID_ANY, "Renderer") SizerVideoSettings.Add(LabelRenderer, 0, wxALL, 5) ComboRenderer = wxComboBox.CreateComboBox(PanelVideoSettings, wxID_ANY, RendererList[0], RendererList) SizerVideoSettings.Add(ComboRenderer, 0, wxALL|wxEXPAND, 5) Local SizerVideoSettings2 : wxBoxSizer SizerVideoSettings2 = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) CheckFullscreen = wxCheckBox.CreateCheckBox(PanelVideoSettings, wxID_ANY, "Fullscreen") SizerVideoSettings2.Add(CheckFullscreen, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) LabelColorDepth = wxStaticText.CreateStaticText(PanelVideoSettings, wxID_ANY, "Color depth") SizerVideoSettings2.Add(LabelColorDepth, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) ChoiceColorDepth = wxChoice.CreateChoice(PanelVideoSettings, wxID_ANY, ColorDepthList) ChoiceColorDepth.SetSelection(0) SizerVideoSettings2.Add(ChoiceColorDepth, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) LabelScreenFrequency = wxStaticText.CreateStaticText(PanelVideoSettings, wxID_ANY, "Screen frequency") SizerVideoSettings2.Add(LabelScreenFrequency, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) ChoiceScreenFrequency = wxChoice.CreateChoice(PanelVideoSettings, wxID_ANY, ScreenFrequencyList) ChoiceScreenFrequency.SetSelection(0) SizerVideoSettings2.Add(ChoiceScreenFrequency, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SizerVideoSettings.AddSizer(SizerVideoSettings2,,, 5) PanelVideoSettings.SetSizer(SizerVideoSettings) SizerMain.Add(PanelVideoSettings, 0, wxALL|wxEXPAND, 5) SizerMain.AddCustomSpacer(0, 10) ' Audio settings LabelAudioSettings = wxStaticText.CreateStaticText(Self, wxID_ANY, "Audio settings") LabelAudioSettings.SetFont(.. wxFont.CreateFontWithAttributes(-1, .. wxFONTFAMILY_DEFAULT, .. wxFONTSTYLE_NORMAL, .. wxFONTWEIGHT_BOLD) .. ) LabelAudioSettings.SetForegroundColour(.. wxColour.CreateColour(255, 255, 255).. ) SizerMain.Add(LabelAudioSettings, 0, wxALL, 4) PanelAudioSettings = wxPanel.CreatePanel(Self, wxID_ANY) Local SizerAudioSettings : wxBoxSizer SizerAudioSettings = wxBoxSizer.CreateBoxSizer(wxVERTICAL) LabelAudioOutputDevice = wxStaticText.CreateStaticText(PanelAudioSettings, wxID_ANY, "Audio output device") SizerAudioSettings.Add(LabelAudioOutputDevice, 0, wxALL, 5) ComboAudioOutputDevice = wxComboBox.CreateComboBox(PanelAudioSettings, wxID_ANY, AudioOutputDeviceList[0], AudioOutputDeviceList) SizerAudioSettings.Add(ComboAudioOutputDevice, 0, wxALL|wxEXPAND, 5) Local SizerAudioSettings2 : wxBoxSizer SizerAudioSettings2 = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) LabelSoundVolume = wxStaticText.CreateStaticText(PanelAudioSettings, wxID_ANY, "Sound volume") SizerAudioSettings2.Add(LabelSoundVolume, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SliderSoundVolume = wxSlider.CreateSlider(PanelAudioSettings, wxID_ANY, 0, 0, 5) SizerAudioSettings2.Add(SliderSoundVolume, 0, wxALL, 5) LabelMusicVolume = wxStaticText.CreateStaticText(PanelAudioSettings, wxID_ANY, "Music volume") SizerAudioSettings2.Add(LabelMusicVolume, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SliderMusicVolume = wxSlider.CreateSlider(PanelAudioSettings, wxID_ANY, 0, 0, 5) SizerAudioSettings2.Add(SliderMusicVolume, 0, wxALL, 5) SizerAudioSettings.AddSizer(SizerAudioSettings2,,, 5) PanelAudioSettings.SetSizer(SizerAudioSettings) SizerMain.Add(PanelAudioSettings, 0, wxALL|wxEXPAND, 5) SizerMain.AddCustomSpacer(0, 10) ' Recorder settings LabelRecorderSettings = wxStaticText.CreateStaticText(Self, wxID_ANY, "Recorder settings") LabelRecorderSettings.SetFont(.. wxFont.CreateFontWithAttributes(-1, .. wxFONTFAMILY_DEFAULT, .. wxFONTSTYLE_NORMAL, .. wxFONTWEIGHT_BOLD) .. ) LabelRecorderSettings.SetForegroundColour(.. wxColour.CreateColour(255, 255, 255).. ) SizerMain.Add(LabelRecorderSettings, 0, wxALL, 4) PanelRecorderSettings = wxPanel.CreatePanel(Self, wxID_ANY) Local SizerRecorderSettings : wxBoxSizer SizerRecorderSettings = wxBoxSizer.CreateBoxSizer(wxVERTICAL) LabelCaptureDevice = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Capture device") SizerRecorderSettings.Add(LabelCaptureDevice, 0, wxALL, 5) ComboCaptureDevice = wxComboBox.CreateComboBox(PanelRecorderSettings, wxID_ANY, CaptureDeviceList[0], CaptureDeviceList) SizerRecorderSettings.Add(ComboCaptureDevice, 0, wxALL|wxEXPAND, 5) Local SizerRecorderSettings2 : wxGridSizer SizerRecorderSettings2 = New wxGridSizer SizerRecorderSettings2.Create(2, 2) Local SizerThreshold : wxBoxSizer SizerThreshold = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) LabelThreshold = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Threshold") SizerThreshold.Add(LabelThreshold, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SliderThreshold = wxSlider.CreateSlider(PanelRecorderSettings, wxID_ANY, 0, 0, 5) SizerThreshold.Add(SliderThreshold, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SizerRecorderSettings2.AddSizer(SizerThreshold) Local SizerNoiseFilter : wxBoxSizer SizerNoiseFilter = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) LabelNoiseFilter = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Noise filter") SizerNoiseFilter.Add(LabelNoiseFilter, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SliderNoiseFilter = wxSlider.CreateSlider(PanelRecorderSettings, wxID_ANY, 0, 0, 5) SizerNoiseFilter.Add(SliderNoiseFilter, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SizerRecorderSettings2.AddSizer(SizerNoiseFilter) Local SizerBoost : wxBoxSizer SizerBoost = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) LabelBoost = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Boost") SizerBoost.Add(LabelBoost, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SliderBoost = wxSlider.CreateSlider(PanelRecorderSettings, wxID_ANY, 0, 0, 5) SizerBoost.Add(SliderBoost, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SizerRecorderSettings2.AddSizer(SizerBoost) CheckSaveToHardDisk = wxCheckBox.CreateCheckBox(PanelRecorderSettings, wxID_ANY, "Save to hard disk") SizerRecorderSettings2.Add(CheckSaveToHardDisk, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5) SizerRecorderSettings.AddSizer(SizerRecorderSettings2) LabelOscilloscope = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Oscilloscope") SizerRecorderSettings.Add(LabelOscilloscope, 0, wxALL, 5) BoxOscilloscope = wxStaticBox.CreateStaticBox(PanelRecorderSettings, wxID_ANY,,,,450, 100) SizerRecorderSettings.Add(BoxOscilloscope, 0, wxALL, 5) LabelAutocorrelation = wxStaticText.CreateStaticText(PanelRecorderSettings, wxID_ANY, "Autocorrelation") SizerRecorderSettings.Add(LabelAutocorrelation, 0, wxALL, 5) BoxAutocorrelation = wxStaticBox.CreateStaticBox(PanelRecorderSettings, wxID_ANY,,,,450, 100) SizerRecorderSettings.Add(BoxAutocorrelation, 0, wxALL, 5) PanelRecorderSettings.SetSizer(SizerRecorderSettings) SizerMain.Add(PanelRecorderSettings, 0, wxALL|wxEXPAND, 5) SizerMain.Fit(Self) Self.SetSizer(SizerMain) End Method Function OnQuit(Event:wxEvent) wxWindow(Event.Parent).Close(True) End Function End Type Wie man dann ein dynamisches Bild(möglichst ohne Max2D) erstellt, weiß ich nicht. Platzhalter sind erstmal 2 mal wxStaticBox. #Reaper: Code: [AUSKLAPPEN] SuperStrict
Framework BRL.Blitz Import wx.wx Import wx.wxApp Import wx.wxFrame Import wx.wxPanel Import wx.wxButton Local Application : TApplication Application = New TApplication Application.Run() Type TApplication Extends wxApp Field Frame : TFrame Method OnInit:Int() Self.Frame = New TFrame Frame.Create(,,"Test") SetTopWindow(Self.Frame) Self.Frame.Show() Return True End Method End Type Type TFrame Extends wxFrame Field Panel : wxPanel Field Button1 : wxButton Field Button2 : wxButton Field Button3 : wxButton Method OnInit() Local SizerMain : wxBoxSizer SizerMain = wxBoxSizer.CreateBoxSizer(wxVERTICAL) Panel = wxPanel.CreatePanel(Self, wxID_ANY) Local SizerPanel : wxBoxSizer SizerPanel = wxBoxSizer.CreateBoxSizer(wxVERTICAL) Local SizerButtons : wxBoxSizer SizerButtons = wxBoxSizer.CreateBoxSizer(wxHORIZONTAL) Button1 = wxButton.CreateButton(Panel, wxID_ANY, "Button 1") SizerButtons.Add(Button1, 0, wxALL|wxALIGN_BOTTOM, 5) Button2 = wxButton.CreateButton(Panel, wxID_ANY, "Button 2") SizerButtons.Add(Button2, 0, wxALL|wxALIGN_BOTTOM, 5) Button3 = wxButton.CreateButton(Panel, wxID_ANY, "Button 3") SizerButtons.Add(Button3, 0, wxALL|wxALIGN_BOTTOM, 5) SizerPanel.AddSizer(SizerButtons, 1, wxALIGN_RIGHT, 5) Panel.SetSizer(SizerPanel) SizerMain.Add(Panel, 1, wxEXPAND|wxALL, 5) Self.SetSizer(SizerMain) End Method End Type mfg olli |
||
vertex.dreamfall.at | GitHub |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, danke für den Code Vertex! Der hilft mir weiter, danke! ![]() Hast du den mit wxFormBuilder zusammengebaut, oder so selber gecodet? Bekomme es z.B. mit dem wxFB so nicht hin, kann den einen Sizer nicht rechtsbündig ausrichten, wie in deinem Code: Code: [AUSKLAPPEN] SizerPanel.AddSizer(SizerButtons, 1, wxALIGN_RIGHT, 5)
Naja, danke! ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch, habe es mit dem wxFormBuilder gemacht.
1. Frame erstellen 2. BoxSizer(wxVERTICAL) in Frame erstellen 3. Panel für BoxSizer erstellen(wenn du kein Rand haben willst, Border = 0) 4. BoxSizer(wxVERTICAL) in Panel erstellen 5. BoxSizer(wxHORIZONTAL, wxALIGN_RIGHT aber ohne wxEXPAND!) in BoxSizer aus Schritt 4 erstellen 6. 3 Buttons in BoxSizer aus Schritt 5 erstellen(wxALIGN_BOTTOM) BoxSizer haben standardmäßig wxEXAPND gesetzt. Der BoxSizer passt sich damit in der Breite immer der Umgebung an. Ist wxEXAPND nicht gesetzt(und Width = -1) nimmt er die Breite seines Inhaltes an. Weiterhin ist auch standardmäßig Proportion = 1 gesetzt(das ist der Stretch-Button im wxFormBuilder). Das bedeutet, dass sich der BoxSizer in der Höhe seiner Umgebung anpasst. Ist Proportion = 0, dann nimmt er die Höhe seines Inhalts. mfg olli |
||
vertex.dreamfall.at | GitHub |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh, Super! Danke für die Erklärung Vertex!
Solangsam klappt das mit dem wx-Designen ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer jetzt wxWidgets aktulisiert findet einen neuen Ordner "tools", in dem Bruceys wxCodeGen zu finden ist. Dieses Programm konvertiert wxFormBuilder-Projekt-Dateien in BlitzMax-Code. Es ist noch nicht fertig und ein paar Sachen fehlen noch, aber für die Standards ist es prima nutzbar.
Weiteres im BlitzBasic.com-Thread. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group