Seite 1 von 1

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

Verfasst: 12.06.2015 16:54
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

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

Verfasst: 12.06.2015 17:11
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

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

Verfasst: 12.06.2015 17:14
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:

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

Verfasst: 12.06.2015 17:15
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

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

Verfasst: 12.06.2015 17:21
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:

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

Verfasst: 12.06.2015 17:24
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

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

Verfasst: 12.06.2015 20:40
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:

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

Verfasst: 12.06.2015 21:30
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 :(

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

Verfasst: 13.06.2015 19:58
von udg
Habe es selber hinbekommen. Danke