[Erledigt] Fenstergröße per Button vergrößern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

[Erledigt] Fenstergröße per Button vergrößern

Beitrag von udg »

Ich habe ein Hauptfenster welches mir etliche Eingabefelder anzeigt. Diese werden nach dem sie ausgefüllt wurden, ausgelesen und in ein EditorGadget per Checkbox übertragen und aufgelistet. Der Übersicht wegen, ist es komfortabler mein Fenster doppelt so breit zu machen.

Das Hauptfenster hat im Moment eine Breite von: 710px und eine Höhe von 835px.
Jetzt habe ich mir überlegt die Ausgabe der Summe aller ausgelesenen Felder in einem breiteren Mainfenster rechts erweitert anzeigen zu lassen.

Ich würde dies gern realisieren indem ich unten einen Button platziere der bewirkt:
wenn Button geklickt dann erweitere mein Hauptfenster auf Breite:1385px und Höhe:835px
In diesem erweiterten Fenster ist folgender Inhalt:

~ PanelGadget
sowie
auch der Exit Button und Minimize Button, die es dann an den rechten Rand verschieben soll.

Ist so etwas möglich, dass man von einem Fenster erst einmal nur die Hälfte anzeigt und per Button klick komplett öffnet und die Buttons entsprechend neu platziert ( Minimize und Exit)?

Hier mal etwas visuelles:

So ist es im Moment
Bild

und so würde ich gern das Fenster per Klick nach rechts erweitern wollen:
Bild

Grüße
Zuletzt geändert von udg am 13.06.2015 19:59, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von RSBasic »

Beispiel:

Code: Alles auswählen

EnableExplicit

Define AdvancedView = #False

If OpenWindow(0, 0, 0, 710, 835, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  EditorGadget(1, 10, 40, WindowWidth(0)-20, WindowHeight(0)-80, 0)
  ButtonGadget(2, WindowWidth(0)-30, 10, 20, 20, "X", 0)
  ButtonGadget(3, WindowWidth(0)-110, WindowHeight(0)-30, 100, 20, "Erweitern >>", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            End
          Case 3
            If AdvancedView = #False
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, 1385, #PB_Ignore)
              SetGadgetText(3, "<< Verringern")
              AdvancedView = #True
            Else
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, 710, #PB_Ignore)
              SetGadgetText(3, "Erweitern >>")
              AdvancedView = #False
            EndIf
        EndSelect
      Case #PB_Event_SizeWindow
        ResizeGadget(1, #PB_Ignore, #PB_Ignore, WindowWidth(0)-20, WindowHeight(0)-80)
        ResizeGadget(2, WindowWidth(0)-30, #PB_Ignore, #PB_Ignore, #PB_Ignore)
        ResizeGadget(3, WindowWidth(0)-110, WindowHeight(0)-30, #PB_Ignore, #PB_Ignore)
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von NicTheQuick »

Dafür musst du doch eigentlich nur mit 'ResizeWindow(#WIN_ID, #PB_Ignore, #PB_Ignore, NeueBreite, #PB_Ignore)' die Breite des Hauptfensters entsprechend ändern und schon stimmt wieder alles.

Mist, RSBasic war schneller. :lol:
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von RSBasic »

Oder:

Code: Alles auswählen

EnableExplicit

Define AdvancedView = #False

If OpenWindow(0, 0, 0, 710, 835, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  EditorGadget(1, 10, 40, WindowWidth(0)-20, WindowHeight(0)-80, 0)
  EditorGadget(4, WindowWidth(0), 40, 1385-(WindowWidth(0)+10), WindowHeight(0)-80, 0)
  ButtonGadget(2, WindowWidth(0)-30, 10, 20, 20, "X", 0)
  ButtonGadget(3, WindowWidth(0)-110, WindowHeight(0)-30, 100, 20, "Erweitern >>", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            End
          Case 3
            If AdvancedView = #False
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, 1385, #PB_Ignore)
              SetGadgetText(3, "<< Verringern")
              AdvancedView = #True
            Else
              ResizeWindow(0, #PB_Ignore, #PB_Ignore, 710, #PB_Ignore)
              SetGadgetText(3, "Erweitern >>")
              AdvancedView = #False
            EndIf
        EndSelect
      Case #PB_Event_SizeWindow
        ResizeGadget(2, WindowWidth(0)-30, #PB_Ignore, #PB_Ignore, #PB_Ignore)
        ResizeGadget(3, WindowWidth(0)-110, WindowHeight(0)-30, #PB_Ignore, #PB_Ignore)
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von udg »

ResizeWindow !

natürlich. Vielen Dank.

Ich werde es erst einmal selber in die Hand nehmen um dabei auch zu lernen. Jedoch das 2te Beispiel von RSBasic hinzuziehen :)

:allright:
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von RSBasic »

udg hat geschrieben:Ich werde es erst einmal selber in die Hand nehmen um dabei auch zu lernen.
Gute Idee, das ist natürlich am besten.

@NicTheQuick
Wäre der Nickname "RSTheQuick" vielleicht besser für mich? :D
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von Bisonte »

RSBasic hat geschrieben:@NicTheQuick
Wäre der Nickname "RSTheQuick" vielleicht besser für mich? :D
RSBasicFasterAsNic kommt da besser ;)
Besonders bei der Abkürzung RSBasicFaN :mrgreen:
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von udg »

Habe es folgender Maßen gelöst:

Ich rufe mein Fenster auf:

Code: Alles auswählen

...
hWnd = OpenWindow(#Window_0, 398, 8, 710, 835, "blub",#PB_Window_BorderLess);| #PB_Window_ScreenCentered)
;eigenen HandCursor definieren
SetClassLong_(Btn_Exit, #GCL_HCURSOR, 0)
cur1 = LoadCursor_(0, #IDC_HAND)

.... alle Gadgets 

Main:
...
    Case #btn_Resize
        ResizeWindow(#Window_0,#PB_Ignore, #PB_Ignore, 1385, #PB_Ignore)
            Btn_Exit = ButtonGadget(#Btn_Exit,WindowWidth(0)-34,4,30,13,"x", 0) ; Exit Button
            SetGadgetFont(#Btn_Exit, LoadFont(#Font_Btn_Exit, "Microsoft Sans Serif", 7, #PB_Font_HighQuality))
            PureCOLOR_SetButtonColor(#Btn_Exit, $DCDCDC, $00268F, $262322, $808080);
...
; SUB zum wechseln des MouseCursors
;
changecursor:
GetCursorPos_(cursorpos.POINT)
MapWindowPoints_(#Window_0, hWnd, cursorpos, 1)
Select ChildWindowFromPoint_(hWnd, cursorpos\x | cursorpos\y << 32)
  Case Btn_Exit : SetCursor_(cur1)              ; Cursor ueber Btn_Exit
EndSelect

Folgendes Problem tritt nun auf.
Ich bereite für mein Hauptfenster den Handcursor vor (MouseOver auf Button). Dieser funktioniert immer. Wenn ich jedoch per Buttonklick das Fenster vergrößere, geht mir der Handcursor in der Vergrößerung verloren. Der Hand Cursor auf dem Exit und Minimize Button wird nicht mehr angezeigt. Auch nachdem ich das Fenster wieder minimiert habe wo es vorher noch ging.

Wie kann ich das Problem nun wieder lösen? hWnd spielt doch hier bestimmt eine Rolle?

vergrößere ich das Fenster so:
hWnd = ResizeWindow(#Window_0,#PB_Ignore, #PB_Ignore, 1385, #PB_Ignore)

gehts auch nicht. Der Cursor bleibt nun ein Pfeil

eins Problem gelöst = 2 neue Probleme :(
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [Frage] Fenstergröße per Button vergrößern

Beitrag von udg »

Habe es selber hinbekommen. Danke
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten