#include #include #include #include #include #include #include #include #include #include #comments-start Versioning and future development thoughts ------------------------------------------------------------------------------------------------------------------- PMDB Written by Christopher O'leary - 11/11/2016 Updates : Version 1.0.0.0 11/11/2016 - Initial version Future Updates.... This application is designed to allow the setup and management of customers and their projects ------------------------------------------------------------------------------------------------------------------- #comments-end Global $i, $k $i = 0 ; Array Index $k = 1 ; Array Size Global $iEventError = 0 ; to be checked to know if com error occurs. Must be reset after handling. Global $userID, $userInitials, $userName, $userGroup, $userCustomer, $userProject, $userNotifications, $userStartupReport, $userEmail, $userLastLogin, $userRegistration ;Declares global user parameters Global $lstObject, $lstAuth, $reRegister, $guiCustomerCHILD Global $inpCustomerID[$k], $inpCustomer[$k], $imgLogo[$k], $btnAddLogo[$k], $btnAddCustomer[$k], $btnProjectView[$k], $NewLinePos, $BeginPos, $PlusTop, $InstanceCounter ;Declares dynamic controls $oMyError = ObjEvent("AutoIt.Error", "ErrFunc") ; Install a custom error handler Opt("GUIDataSeparatorChar", ",") LoadCustomerList() Func LoadCustomerList() #REGION ; GUI CREATION ;-------------------------------------------------------------------------- ;Creates the Customer main GUI ;-------------------------------------------------------------------------- $guiCustomerMAIN = GUICreate("PMDB Customer",500, 600,-1,-1) ;W,H,L,T GUISetFont(13) GUICtrlCreateLabel("ID", 10, 10, 50, 20, $SS_CENTER) ;L,T,W,H GUICtrlCreateLabel("Customer", 70, 10, 200, 20) ;L,T,W,H GUISetFont(11) $btnNewLine = GUICtrlCreateButton("Add Customer", 340, 10, 140, 30) $btnExit = GUICtrlCreateButton("Exit", 340, 550, 140, 40) ;L,T,W,H ControlFocus("PMDB Customer", "", $btnExit) GUISetState(@SW_SHOW, $guiCustomerMAIN) ; Display the main GUI ;-------------------------------------------------------------------------- ;Creates the Customer child GUI ;-------------------------------------------------------------------------- $BeginPos = 0 ; Startposition of the controls $NewLinePos = 64 $PlusTop = 30 ; Moving distance for the controls $guiCustomerCHILD = GUICreate("", 500, 490, 0, 50, $WS_CHILD, -1, $guiCustomerMAIN) ;W,H,L,T GUISetFont(11) ; Create the 1st line of controls and write every single control in each array at index 0 $inpCustomerID[$i] = GUICtrlCreateInput("", 11, 0, 51, 20, $ES_CENTER) ;L,T,W,H GUICtrlSetState($inpCustomerID[$i], $GUI_DISABLE) $inpCustomer[$i] = GUICtrlCreateInput("", 73, 0, 207, 20) ;L,T,W,H $imgLogo[$i] = GUICtrlCreateInput("", 290, 0, 51, 20) ;L,T,W,H $btnProjectView[$i] = GUICtrlCreateButton("View Project", 405, 0, 90, 20) ;L,T,W,H ;$btnAddCustomer[$i] = GUICtrlCreateButton("Save", 384, $BeginPos, 41, 20) ;L,T,W,H $aRet = _GUIScrollbars_Size(0, 490, 500, 490) ;L,T,W,H GUISetState(@SW_SHOW, $guiCustomerCHILD) ; Display the child GUI DllCall("user32.dll", "int", "SetParent", "hwnd", WinGetHandle($guiCustomerMAIN), "hwnd", WinGetHandle($guiCustomerCHILD)) ;-------------------------------------------------------------------------- ;Sets up the scroll bars ;-------------------------------------------------------------------------- ;$aRet = _GUIScrollbars_Size(0, 550, 500, 540) ;L,T,W,H GUIRegisterMsg($WM_VSCROLL, "_Scrollbars_WM_VSCROLL") _GUIScrollBars_Init($guiCustomerCHILD) _GUIScrollBars_ShowScrollBar($guiCustomerCHILD, $SB_VERT, True) _GUIScrollBars_ShowScrollBar($guiCustomerCHILD, $SB_HORZ, False) _GUIScrollBars_SetScrollInfoPage($guiCustomerCHILD, $SB_VERT, $aRet[2]) _GUIScrollBars_SetScrollInfoMax($guiCustomerCHILD, $SB_VERT, $aRet[3]) ;-------------------------------------------------------------------------- ;Displays the GUI and sets the button functions ;-------------------------------------------------------------------------- #EndRegion $InstanceCounter = 1 ; Counter to count the amount of renderinstances needed to be opened While 1 $msg = GUIGetMsg() Select Case $msg = $btnExit Exit Case $msg = $btnNewLine AddLine() Case $msg > 0 For $iIndex = 0 To UBound($btnProjectView) - 1 If $btnProjectView[$iIndex] = $msg Then ;MsgBox(0, "", "You clicked one of the choose buttons") GUICtrlSetState($inpCustomer[$iIndex], $GUI_DISABLE) GUICtrlSetState($btnAddCustomer[$iIndex], $GUI_DISABLE) GUICtrlSetState($inpCustomerID[$iIndex], $GUI_DISABLE) GUICtrlSetState($imgLogo[$iIndex], $GUI_DISABLE) GUICtrlSetState($btnProjectView[$iIndex], $GUI_DISABLE) ContinueLoop Endif Next For $iIndex = 0 To UBound($btnAddCustomer) - 1 If $btnAddCustomer[$iIndex] = $msg Then ;MsgBox(0, "", "You clicked one of the open buttons") MsgBox(0, "", GUICtrlRead($inpCustomer[$iIndex])) ContinueLoop Endif Next EndSelect WEnd EndFunc Func AddLine() GUISetFont(11) ; Push NewLineButton down $NewLinePos = $NewLinePos + $PlusTop ;GUICtrlSetPos($NewLineButton, 80, $NewLinePos) $InstanceCounter = $InstanceCounter + 1 ; Count InstanceCounter up $BeginPos = $BeginPos + $PlusTop ; Update the top positions of the controls $i = $i + 1 ; Count index variable up $k = $k + 1 ; Count array size up ; Resize the array / get more room in each array ReDim $inpCustomer[$k] ReDim $btnAddCustomer[$k] ReDim $inpCustomerID[$k] ReDim $imgLogo[$k] ReDim $btnProjectView[$k] ; Create a new line of controls and store them in the specific array $inpCustomerID[$i] = GUICtrlCreateInput("", 10, $BeginPos, 50, 20, $ES_CENTER) GUICtrlSetState($inpCustomerID[$i], $GUI_DISABLE) $inpCustomer[$i] = GUICtrlCreateInput("", 70, $BeginPos, 200, 20) $imgLogo[$i] = GUICtrlCreateInput("", 280, $BeginPos, 50, 20) $btnProjectView[$i] = GUICtrlCreateButton("View Project", 390, $BeginPos, 90, 20) ;$btnAddCustomer[$i] = GUICtrlCreateButton("open", 60, $BeginPos, 200, 20) ;~ If $BeginPos > 490 Then ;~ $aRet = _GUIScrollbars_Size(0, ($BeginPos + 40), 500, 490) ;~ ConsoleWrite($BeginPos & " - " & $aRet[2] & " - " & $aRet[3] & @CRLF) ;~ _GUIScrollBars_SetScrollInfoPage($guiCustomerCHILD, $SB_VERT, $aRet[2]) ;~ _GUIScrollBars_SetScrollInfoMax($guiCustomerCHILD, $SB_VERT, $aRet[3]) ;~ EndIf EndFunc Func _Scrollbars_WM_VSCROLL($hWnd, $Msg, $wParam, $lParam) ; ALLOWS SCROLL BARS TO FUNCTION #forceref $Msg, $wParam, $lParam Local $nScrollCode = BitAND($wParam, 0x0000FFFF) Local $iIndex = -1, $yChar, $yPos Local $Min, $Max, $Page, $Pos, $TrackPos For $x = 0 To UBound($__g_aSB_WindowInfo) - 1 If $__g_aSB_WindowInfo[$x][0] = $hWnd Then $iIndex = $x $yChar = $__g_aSB_WindowInfo[$iIndex][3] ExitLoop EndIf Next If $iIndex = -1 Then Return 0 Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT) $Min = DllStructGetData($tSCROLLINFO, "nMin") $Max = DllStructGetData($tSCROLLINFO, "nMax") $Page = DllStructGetData($tSCROLLINFO, "nPage") $yPos = DllStructGetData($tSCROLLINFO, "nPos") $Pos = $yPos $TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos") Switch $nScrollCode Case $SB_TOP DllStructSetData($tSCROLLINFO, "nPos", $Min) Case $SB_BOTTOM DllStructSetData($tSCROLLINFO, "nPos", $Max) Case $SB_LINEUP DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1) Case $SB_LINEDOWN DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1) Case $SB_PAGEUP DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page) Case $SB_PAGEDOWN DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page) Case $SB_THUMBTRACK DllStructSetData($tSCROLLINFO, "nPos", $TrackPos) EndSwitch DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS) _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO) _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO) $Pos = DllStructGetData($tSCROLLINFO, "nPos") If ($Pos <> $yPos) Then _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos)) $yPos = $Pos EndIf Return $GUI_RUNDEFMSG EndFunc ;==>_Scrollbars_WM_VSCROLL