Jump to content

Trying to make a form that is constrained inside of another form.


Go to solution Solved by ioa747,

Recommended Posts

Posted (edited)

Hello, I'm trying to make a form window that is constrained within another form (inside of the red square). I've tried so many different things that I can't remember now. Is it possible?

Edit: I'm thinking maybe a watch dog that will stop movement of the window once it reaches the boundary? But then again, I'd like for the window to be cut off by the tab if it moves too far to the right or bottom.

image.png.a6e57dc0022c7d83ba328f2f005412e0.png

The code if you'd like to see it:

#include-once

Opt("WinTitleMatchMode", 4) ; advanced
Opt("MouseCoordMode", 2)

#include <ButtonConstants.au3>
#include <GuiConstantsEx.au3>

Global Const $main_width  = 815
Global Const $main_height = 860
Global Const $main_left   = (@DesktopWidth  / 2) - ($main_width  / 2)
Global Const $main_top    = (@DesktopHeight / 2) - ($main_height / 2)

Global Const $guiCanvas = GuiCreate("GUI Canvas", $main_width, $main_height, $main_left, $main_top)

GUISetFont(10, -1, -1, "Segoe UI", $guiCanvas)

#Region menu items
Global Const $menu_file            = GUICtrlCreateMenu    ("File")
Global Const $menu_save_definition = GUICtrlCreateMenuitem("Save", $menu_file) ; Roy add-on
Global Const $menu_load_definition = GUICtrlCreateMenuitem("Load", $menu_file) ; Roy add-on
                                     GUICtrlCreateMenuitem(''    , $menu_file) ; Roy add-on
Global Const $menu_exit            = GUICtrlCreateMenuitem("Exit", $menu_file)

Global Const $menu_edit  = GUICtrlCreateMenu    ("Edit")
Global Const $menu_vals  = GUICtrlCreateMenuitem("Vals"              , $menu_edit) ; added by: TheSaint
Global Const $menu_wipe  = GUICtrlCreateMenuitem("Clear All Controls", $menu_edit)
Global Const $menu_about = GUICtrlCreateMenuitem("About"             , $menu_edit) ; added by: TheSaint

GUICtrlSetState($menu_wipe, $GUI_DISABLE)

Global Const $menu_settings    = GUICtrlCreateMenu    ("Settings")
Global Const $menu_show_grid   = GUICtrlCreateMenuItem("Show grid"               , $menu_settings)
Global Const $menu_grid_snap   = GUICtrlCreateMenuItem("Snap to grid"            , $menu_settings)
Global Const $menu_paste_pos   = GUICtrlCreateMenuItem("Paste at mouse position" , $menu_settings)
Global Const $menu_show_ctrl   = GUICtrlCreateMenuItem("Show control when moving", $menu_settings)
Global Const $menu_show_hidden = GUICtrlCreateMenuItem("Show hidden controls"    , $menu_settings)

GUICtrlSetState($menu_show_grid  , $GUI_CHECKED  )
GUICtrlSetState($menu_grid_snap  , $GUI_CHECKED  )
GUICtrlSetState($menu_paste_pos  , $GUI_CHECKED  )
GUICtrlSetState($menu_show_ctrl  , $GUI_CHECKED  )
GUICtrlSetState($menu_show_hidden, $GUI_UNCHECKED)
#EndRegion menu items

#Region toolbar
Global Const $default_cursor  = CreateToolButton("Cursor"      ,  5,   5)
Global Const $toolTab         = CreateToolButton("Tab"         , 45,   5)
Global Const $toolGroup       = CreateToolButton("Group"       ,  5,  45)
Global Const $toolButton      = CreateToolButton("Button"      , 45,  45)
Global Const $toolCheckbox    = CreateToolButton("Checkbox"    ,  5,  85)
Global Const $toolRadio       = CreateToolButton("Radio"       , 45,  85)
Global Const $toolEdit        = CreateToolButton("Edit"        ,  5, 125)
Global Const $toolInput       = CreateToolButton("Input"       , 45, 125)
Global Const $toolLabel       = CreateToolButton("Label"       ,  5, 165)
Global Const $toolUpDown      = CreateToolButton("UpDown"      , 45, 165)                 
Global Const $toolList        = CreateToolButton("List"        ,  5, 205)
Global Const $toolCombo       = CreateToolButton("Combo"       , 45, 205)
Global Const $toolDate        = CreateToolButton("Date"        ,  5, 245)
Global Const $toolTreeview    = CreateToolButton("Treeview"    , 45, 245)
Global Const $toolProgress    = CreateToolButton("Progress"    ,  5, 285)                 
Global Const $toolAvi         = CreateToolButton("Avi"         , 45, 285)
Global Const $toolIcon        = CreateToolButton("Icon"        ,  5, 325)
Global Const $toolPic         = CreateToolButton("Pic"         , 45, 325)
Global Const $toolSlider      = CreateToolButton("Slider"      ,  5, 365)
Global Const $toolMenu        = CreateToolButton("Menu"        , 45, 365)
Global Const $toolContextMenu = CreateToolButton("Context Menu",  5, 405)
Global Const $toolForm        = CreateToolButton("Form"        , 45, 405)
#EndRegion toolbar

GUICtrlCreateTab(95, 5, $main_width - 105, $main_height - 35)

GUICtrlCreateTabItem("Form 1")

GUICtrlCreateTabItem("Form 2")

GUISetState(@SW_SHOWNORMAL)

Do
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
  EndSwitch
Until False

Func CreateToolButton(Const $name, Const $left, Const $top)
  Local Const $tool = GUICtrlCreateRadio($name, $left, $top, 40, 40, BitOR($BS_PUSHLIKE, $BS_ICON))
  
  GUICtrlSetImage($tool, @ScriptDir & "\resources\Icons\" & $name & ".ico")
  
  GUICtrlSetTip($tool, $name)
  
  Return $tool
EndFunc

 

Edited by jaberwacky
  • Solution
Posted

but I couldn't put it in the Tab control

But as a thought if you want, you could replace the Tabs with buttons, which would represent the "pages", and depending on which button you pressed, the objects that don't belong to the "page" would be hidden, and the ones that belong to the "page" would be displayed

...
;~ GUICtrlCreateTab(95, 5, $main_width - 105, $main_height - 35)
;~ GUICtrlCreateTabItem("Form 1")
;~ GUICtrlCreateTabItem("Form 2")

GUISetState(@SW_SHOWNORMAL)

Global Const $hChildWnd = GuiCreate("ChildWnd", 400, 200, 100, 10, BitOR($WS_CHILD, $WS_OVERLAPPEDWINDOW), -1, $toolbar)
GUISetState(@SW_SHOWNORMAL, $hChildWnd)

...

I know that I know nothing

Posted
22 hours ago, ioa747 said:

but I couldn't put it in the Tab control

But as a thought if you want, you could replace the Tabs with buttons, which would represent the "pages", and depending on which button you pressed, the objects that don't belong to the "page" would be hidden, and the ones that belong to the "page" would be displayed

Tremendous! Thank you, this gives me something to tinker with!

Posted (edited)

Progress! ... Click the form button beside of the cursor button (more than once if you want to). Now the windows are clipped to the left too!

#include-once

Opt("WinTitleMatchMode", 4) ; advanced
Opt("MouseCoordMode"   , 2)

#include <WindowsStylesConstants.au3>
#include <ButtonConstants.au3>
#include <GuiConstantsEx.au3>

Global $formList[], $formCount = 0

Global Const $main_width  = 815
Global Const $main_height = 860
Global Const $main_left   = (@DesktopWidth  / 2) - ($main_width  / 2)
Global Const $main_top    = (@DesktopHeight / 2) - ($main_height / 2)

Global Const $guiCanvas = GuiCreate("GUI Canvas", $main_width, $main_height, $main_left, $main_top)

Global Const $canvas = GuiCreate('', ($main_width - 105), ($main_height - 35), 95, 5, $WS_CHILD, $WS_EX_OVERLAPPEDWINDOW, $guiCanvas)

GUISetFont(10, -1, -1, "Segoe UI", $guiCanvas)

#region ; menu items
Global Const $menu_file            = GUICtrlCreateMenu    ("File")
Global Const $menu_save_definition = GUICtrlCreateMenuitem("Save", $menu_file) ; Roy add-on
Global Const $menu_load_definition = GUICtrlCreateMenuitem("Load", $menu_file) ; Roy add-on
                                     GUICtrlCreateMenuitem(''    , $menu_file) ; Roy add-on
Global Const $menu_exit            = GUICtrlCreateMenuitem("Exit", $menu_file)

Global Const $menu_edit  = GUICtrlCreateMenu    ("Edit")
Global Const $menu_vals  = GUICtrlCreateMenuitem("Vals"              , $menu_edit) ; added by: TheSaint
Global Const $menu_wipe  = GUICtrlCreateMenuitem("Clear all controls", $menu_edit)
Global Const $menu_about = GUICtrlCreateMenuitem("About"             , $menu_edit) ; added by: TheSaint

GUICtrlSetState($menu_wipe, $GUI_DISABLE)

Global Const $menu_settings    = GUICtrlCreateMenu    ("Settings")
Global Const $menu_show_grid   = GUICtrlCreateMenuItem("Show grid"               , $menu_settings)
Global Const $menu_grid_snap   = GUICtrlCreateMenuItem("Snap to grid"            , $menu_settings)
Global Const $menu_paste_pos   = GUICtrlCreateMenuItem("Paste at mouse position" , $menu_settings)
Global Const $menu_show_ctrl   = GUICtrlCreateMenuItem("Show control when moving", $menu_settings)
Global Const $menu_show_hidden = GUICtrlCreateMenuItem("Show hidden controls"    , $menu_settings)

GUICtrlSetState($menu_show_grid  , $GUI_CHECKED  )
GUICtrlSetState($menu_grid_snap  , $GUI_CHECKED  )
GUICtrlSetState($menu_paste_pos  , $GUI_CHECKED  )
GUICtrlSetState($menu_show_ctrl  , $GUI_CHECKED  )
GUICtrlSetState($menu_show_hidden, $GUI_UNCHECKED)
#endregion ; menu items

#region ; toolbar
Global Const $default_cursor  = CreateToolButton("Cursor"      ,  5,   5)
Global Const $toolForm        = CreateToolButton("Form"        , 45,   5)
Global Const $toolGroup       = CreateToolButton("Group"       ,  5,  45)
Global Const $toolButton      = CreateToolButton("Button"      , 45,  45)
Global Const $toolCheckbox    = CreateToolButton("Checkbox"    ,  5,  85)
Global Const $toolRadio       = CreateToolButton("Radio"       , 45,  85)
Global Const $toolEdit        = CreateToolButton("Edit"        ,  5, 125)
Global Const $toolInput       = CreateToolButton("Input"       , 45, 125)
Global Const $toolLabel       = CreateToolButton("Label"       ,  5, 165)
Global Const $toolUpDown      = CreateToolButton("UpDown"      , 45, 165)                 
Global Const $toolList        = CreateToolButton("List"        ,  5, 205)
Global Const $toolCombo       = CreateToolButton("Combo"       , 45, 205)
Global Const $toolDate        = CreateToolButton("Date"        ,  5, 245)
Global Const $toolTreeview    = CreateToolButton("Treeview"    , 45, 245)
Global Const $toolProgress    = CreateToolButton("Progress"    ,  5, 285)                 
Global Const $toolAvi         = CreateToolButton("Avi"         , 45, 285)
Global Const $toolIcon        = CreateToolButton("Icon"        ,  5, 325)
Global Const $toolPic         = CreateToolButton("Pic"         , 45, 325)
Global Const $toolSlider      = CreateToolButton("Slider"      ,  5, 365)
Global Const $toolMenu        = CreateToolButton("Menu"        , 45, 365)
Global Const $toolContextMenu = CreateToolButton("Context Menu",  5, 405)
Global Const $toolTab         = CreateToolButton("Tab"         , 45, 405)
#endregion ; toolbar

main()

Func main()
  GUISetState(@SW_SHOWNORMAL, $guiCanvas)

  GUISetState(@SW_SHOWNORMAL, $canvas)

  Local $msg

  Do
    $msg = GUIGetMsg($GUI_EVENT_ARRAY)
    
    Switch $msg[1]
      Case $guiCanvas
        Switch $msg[0]
          Case $toolForm
            CreateForm()
            
          Case $GUI_EVENT_CLOSE
            Exit
        EndSwitch
    EndSwitch
  Until False
EndFunc

Func CreateForm()
  GUISwitch($canvas)
  
  $formCount += 1
      
  Local Const $form = GuiCreate("Form " & $formCount, 400, 600, 5, 5, BitOR($WS_CHILD, $WS_OVERLAPPEDWINDOW), -1, $canvas)
  
  $formList["Form" & $formCount] = $form

  GUISetState(@SW_SHOWNORMAL, $form)
  
  GUISwitch($guiCanvas)
  
  Return $form
EndFunc

Func CreateToolButton(Const $name, Const $left, Const $top)
  Local Const $tool = GUICtrlCreateRadio($name, $left, $top, 40, 40, BitOR($BS_PUSHLIKE, $BS_ICON))
  
  GUICtrlSetImage($tool, @ScriptDir & "\resources\Icons\" & $name & ".ico")
  
  GUICtrlSetTip($tool, $name)
  
  Return $tool
EndFunc

 

Edited by jaberwacky

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...