ImageGadget as a minimize button

Just starting out? Need help? Post your questions and find answers here.
User avatar
braveheart
User
User
Posts: 37
Joined: Mon Jan 04, 2010 5:54 pm

ImageGadget as a minimize button

Post by braveheart »

Code: Select all

Enumeration
  #oWin
  #oButton
  #oImgBtn
EndEnumeration

OpenWindow(#oWin,0,0,300,300,"Minimize", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ButtonGadget(#oButton,10,10,100,30,"Minimize")
ImageGadget(#oImgBtn,130,10,100,30,0,#PB_Image_Border)
Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #oButton
          SetWindowState(#oWin,#PB_Window_Minimize)
        Case #oImgBtn
          SetWindowState(#oWin,#PB_Window_Minimize)
      EndSelect
  EndSelect
  
  Until event=#PB_Event_CloseWindow
Why does image gadget performs minimize before it clicked after 2nd time?
User avatar
STARGÅTE
Addict
Addict
Posts: 2227
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: ImageGadget as a minimize button

Post by STARGÅTE »

ImageGadget()
The following events are supported through EventType():
#PB_EventType_LeftClick
#PB_EventType_RightClick
#PB_EventType_LeftDoubleClick
#PB_EventType_RightDoubleClick
#PB_EventType_DragStart

Code: Select all

Enumeration
  #oWin
  #oButton
  #oImgBtn
EndEnumeration

OpenWindow(#oWin,0,0,300,300,"Minimize", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
ButtonGadget(#oButton,10,10,100,30,"Minimize")
ImageGadget(#oImgBtn,130,10,100,30,0,#PB_Image_Border)
Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #oButton
          SetWindowState(#oWin,#PB_Window_Minimize)
        Case #oImgBtn
          If EventType() = #PB_EventType_LeftClick
            SetWindowState(#oWin,#PB_Window_Minimize)
          EndIf
      EndSelect
  EndSelect
  
  Until event=#PB_Event_CloseWindow
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
User avatar
braveheart
User
User
Posts: 37
Joined: Mon Jan 04, 2010 5:54 pm

Re: ImageGadget as a minimize button

Post by braveheart »

STARGÅTE Thank you! :D
WilliamL
Addict
Addict
Posts: 1252
Joined: Mon Aug 04, 2008 10:56 pm
Location: Seattle, USA

Re: ImageGadget as a minimize button

Post by WilliamL »

Mac only! I wanted to get this to work on a Mac and this is what I came up with. I found I had to add |#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget/i] to get it to work and #PB_Window_SystemMenu had to be added to be able to close the window. When the window 'minimizes' it goes into the Dock. (which I happen to like and use)

Code: Select all

Enumeration
  #oWin
  #oButton
  #nButton
  #oImgBtn
EndEnumeration

If CreateImage(#oImgBtn,100,30)
    If StartDrawing(ImageOutput(#oImgBtn))
        Box(0,0,100,30,$99FF99)
        DrawingMode(#PB_2DDrawing_Transparent)
        DrawText(4,10,"Minimize",0)
        StopDrawing()
    EndIf
EndIf
    
OpenWindow(#oWin,0,30,340,200,"Window sizes", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
    ButtonGadget(#oButton,10,10,100,30,"Maximize")
    ImageGadget(#oImgBtn,130,10,100,30,ImageID(#oImgBtn),#PB_Image_Border)
    ButtonGadget(#nButton,240,10,100,30,"Normalize")

Repeat
    event=WaitWindowEvent()
    Select event
    Case #PB_Event_Gadget
        Select EventGadget()
        Case #oButton
            SetWindowState(#oWin,#PB_Window_Maximize)
        Case #oImgBtn
            SetWindowState(#oWin,#PB_Window_Minimize)
        Case #nButton
            SetWindowState(#oWin,#PB_Window_Normal)
        EndSelect
    EndSelect
Until event=#PB_Event_CloseWindow
MacBook Pro-M1 (2021), Sequoia 15.4, PB 6.20
Post Reply