Resize Feld, Frame ... nach resize Main Window

Anfängerfragen zum Programmieren mit PureBasic.
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Resize Feld, Frame ... nach resize Main Window

Beitrag von funk.munich »

Hi zusammen,

wie kann ich es schaffen, wenn ich mein Hauptfenster vergrössere/verkleinere
dass sich meine anderen Fenster der neuen Grösse anpassen?

Wenn ich nur ein Fenster nutze dann funxt es einwandfrei, aber beim
Aufruf eines weiteren Fensters haut es dann nicht mehr hin :(

Code: Alles auswählen


#MAIN_FLAG = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_WindowCentered
If OpenWindow(0, 0, 0, 400, 400, #MAIN_FLAG, "Resize")

   If CreateGadgetList(WindowID())

    Frame3DGadget(1, 5,  5, 215, WindowHeight(), "Test Case ID")
    
    ListViewGadget(2, 10, 20, 200, WindowHeight() - 20)
    
    ; wenn ich kein weiteres Fenster aufrufe funktioniert die Anpassung
    ; aber beim Aufruf eines neuen Fensters verlieren die Felder meines ersten Fensters die Größenangaben
    ButtonGadget(3, 220, 20, 60, 20, "Open", #PB_Button_Toggle)
    
  EndIf

EndIf

Procedure newWindow()

  If OpenWindow(4, 0, 0, 200, 200, #PB_Window_SystemMenu, "New")

  EndIf

EndProcedure

Repeat
    
    Select WaitWindowEvent()
    
    Case #PB_Event_CloseWindow
    
      Select EventWindowID()

        Case 0
          CloseWindow(EventWindowID())
          QUIT = 1
          
        Case 4
          CloseWindow(EventWindowID())
               
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case 3
          newWindow()
      EndSelect
      
    Case #PB_Event_SizeWindow
        ResizeGadget(1, -1, -1, -1, (WindowHeight()))    
        ResizeGadget(2, -1, -1, -1, (WindowHeight() - 20))    
      
  EndSelect

Until QUIT = 1
End
Wäre super, wenn Ihr mir mal wieder einen Tipp geben könntet.

Danke + Gruß,
Daniel
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Resize Feld, Frame ... nach resize Main Window

Beitrag von Kiffi »

Hallo funk.munich

[c]WindowHeight()[/c] bezieht sich in PB3.94 immer auf das aktuelle Fenster.

Aus diesem Grund musst Du dieses bei mehreren Fenstern zuvor setzen mit:

[c]UseWindow(0) [/c]

In Deinem Fall also

Code: Alles auswählen

Case #PB_Event_SizeWindow
 UseWindow(0)
 ResizeGadget(1, -1, -1, -1, (WindowHeight()))   
 ResizeGadget(2, -1, -1, -1, (WindowHeight() - 20))    
Grüße ... Kiffi
a²+b²=mc²
funk.munich
Beiträge: 123
Registriert: 27.03.2006 09:45

Beitrag von funk.munich »

Hi Kiffi,

hier funk.munich :D
Super vielen Dank. Das hat sofort geklappt.

Gruß,
Daniel
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Hallo Daniel,

> Das hat sofort geklappt.

Prima! :-)

Falls Du mal irgendwann vorhast, auf PB4 umzusteigen: Dort kannst Du
sofort die FensterID dem Befehl WindowHeight() übergeben, so dass
UseWindow() überflüssig wird.

Code: Alles auswählen

Case #PB_Event_SizeWindow
 ResizeGadget(1, -1, -1, -1, (WindowHeight(0)))   
 ResizeGadget(2, -1, -1, -1, (WindowHeight(0) - 20))   
Grüße ... Kiffi
a²+b²=mc²
Antworten