Aktuelle Zeit: 24.11.2020 19:02

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [ERLEDIGT] ComboBox Wert übergeben an Fenster ?
BeitragVerfasst: 03.02.2020 02:56 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Hallo Alle miteinander,

ich stehe gerade auf dem Schlauch. Hab schon wieder zu lange Codingpause gemacht.

Habe hier ein kleines Fenster, einen Requester der eine ComboBox beinhaltet. Diese hat zur Auswahl, FensterGröße in Pixel:

Global x1 = 1280, y1 = 720
Global x2 = 1920, y2 = 1080
Global x3 = 2560, y3 = 1440
Global x4 = 3840, y4 = 2160

nun hab ich leider Hohl in Denkmasse wie ich den Wert in mein eigentliches Fenster übergeben kann? Mit 2 separaten Feldern(text oder string) zb eins für "X" und eins für "Y" ist es kein Ding. Das klappt.

Wie aber mache ich das mit einem Combo?

Bild

hier mal ein schnelles Beispiel:

Code:
Enumeration 0 ; Windows
  #Window
  #Wnd_Requester
EndEnumeration
Enumeration 0 ; Gadgets
  #OGL_Gadget
  #ComboBox
  #Btn_Run
  #Fnt_SegoeUI12
EndEnumeration

;;Screen Resolution

Global x1 = 1280, y1 = 720
Global x2 = 1920, y2 = 1080
Global x3 = 2560, y3 = 1440
Global x4 = 3840, y4 = 2160

Define ResolutionX, ResolutionY

LoadFont(#Fnt_SegoeUI12, "Segoe Ui", 12, #PB_Font_HighQuality)
Procedure Create_Res_Requester()
 
    OpenWindow(#Wnd_Requester, 0, 0, 400, 250, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    ComboBoxGadget(#ComboBox, WindowWidth(#Wnd_Requester)/4.5, 70, 220, 30)
    SetGadgetFont(#ComboBox, FontID(#Fnt_SegoeUI12))
    AddGadgetItem(#ComboBox, -1, "Resolution       " + Str(x1) +" x "+ Str(y1))
    AddGadgetItem(#ComboBox, -1, "Resolution       " + Str(x2) +" x "+ Str(y2))
    AddGadgetItem(#ComboBox, -1, "Resolution       " + Str(x3) +" x "+ Str(y3))
    AddGadgetItem(#ComboBox, -1, "Resolution       " + Str(x4) +" x "+ Str(y4))
    SetGadgetState(#ComboBox, 0)    ; den ersten Eintrag als aktiv setzen
    ButtonGadget(#Btn_Run, WindowWidth(#Wnd_Requester)/4.5, 130, 220, 45, "start")   
    SetGadgetFont(#Btn_Run, FontID(#Fnt_SegoeUI12))
 
EndProcedure
Create_Res_Requester()

Procedure CreateMainWindow()

   OpenWindow(#Window, 0, 0, ResolutionX, ResolutionY,"", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
  ; ; OpenGLGadget(#OGL_Gadget, 0, 0, ResolutionX, ResolutionY) : Init_OpenGL(#OGL_Gadget, ResolutionX, ResolutionY)
   HideWindow(#Window, #False)
 
EndProcedure
Repeat
 
  Event = WindowEvent() 
   
    Select Event
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadget()
          Case   #Btn_Run
          CreateMainWindow()
        EndSelect 
    EndSelect
   
ForEver


Danke fürs Drüberschauen

VG

_________________
PureBasic v5.44 LTS + v5.72 LTS | Windows 7 x64 - Gforce GTX 1060 - AMD FX6200 Six Core 3.80 | 26GB RAM


Zuletzt geändert von udg am 03.02.2020 09:30, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ComboBox Wert übergeben an Fenster ?
BeitragVerfasst: 03.02.2020 07:55 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
eigentlich reicht ja :
Code:
Width = Val(Trim(Left(GadgetText(#ComboBox),4)))
Height = Val(Trim(Right(GadgetText(#ComboBox),4)))

aber es gibt auch das ...
Code:
EnableExplicit

Procedure.i ResolutionRequester(Array Resolution(2), hFont = 0)
 
  Protected Event, Combo, Button, i, Result = 0
  Protected Window = OpenWindow(#PB_Any, 0, 0, 400, 250, "Set Resolution", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
 
  If Window
    Combo  = ComboBoxGadget(#PB_Any, WindowWidth(Window)/4.5, 70, 220, 30)
    Button = ButtonGadget(#PB_Any, WindowWidth(Window)/4.5, 130, 220, 45, "Start")
   
    If hFont
      SetGadgetFont(Combo,  hFont)
      SetGadgetFont(Button, hFont)
    EndIf
   
    For i = 0 To ArraySize(Resolution(), 1)
      AddGadgetItem(Combo, -1, "Resolution       " + Str(Resolution(i, 0)) +" x "+ Str(Resolution(i, 1)))
    Next i
   
    SetGadgetState(Combo, 0)
   
    Repeat
     
      Event = WaitWindowEvent()
     
      Select Event
        Case #PB_Event_CloseWindow
          Break
        Case #PB_Event_Gadget
          If EventGadget() = Button
            Result = GetGadgetState(Combo)
            If Result = -1
              Result = 0
            EndIf
            Break             
          EndIf
         
      EndSelect
     
    ForEver
   
    CloseWindow(Window)
   
  EndIf
 
  ProcedureReturn Result
 
EndProcedure

; Example

Define Res, Event, Quit
Dim Resolution(3, 1)

; Dimension 0 = Width : Dimension 1 = Height
Resolution(0, 0) = 1280 : Resolution(0, 1) = 720
Resolution(1, 0) = 1980 : Resolution(1, 1) = 1080
Resolution(2, 0) = 2560 : Resolution(2, 1) = 1440
Resolution(3, 0) = 3840 : Resolution(3, 1) = 2160

LoadFont(1, "Segoe UI", 12, #PB_Font_HighQuality)

Res = ResolutionRequester(Resolution(), FontID(1))

OpenWindow(0, 0, 0, Resolution(Res, 0), Resolution(Res, 1), "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

AddKeyboardShortcut(0, #PB_Shortcut_Escape, 59999)

Repeat
  Event = WaitWindowEvent()
 
  Select Event
    Case #PB_Event_CloseWindow
      Quit = #True
     
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          ;       
      EndSelect
     
    Case #PB_Event_Menu
      Select EventMenu()
        Case 59999
          Quit = #True
      EndSelect
     
  EndSelect
 
Until Quit

_________________
PureBasic 5.72 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 64GB RAM | iChill GeForce RTX 2080 Super | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ComboBox Wert übergeben an Fenster ?
BeitragVerfasst: 03.02.2020 09:30 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
Aha. Supi


Nun funktioniert es wie es gedacht war.
Code:
Width = Val(Trim(Left(GadgetText(#ComboBox),4)))
Height = Val(Trim(Right(GadgetText(#ComboBox),4)))


damit konnte ich nicht weiterarbeiten, funktionierte zwar in meinem Requester auch aber das OGL wollte damit nicht.

der 2te Code brachte das Ergebnis wie gewünscht,
eingebaut, umgepflügt, dummen Fehler gesucht und läuft.



Vielen DANK \o/ :allright:

_________________
PureBasic v5.44 LTS + v5.72 LTS | Windows 7 x64 - Gforce GTX 1060 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google Adsense [Bot] und 23 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye