Sage 300 -Allowing Only Minimize Box on Customized OCX

By | December 1, 2017

Sage 300 classic desktop provides various user interfaces i.e. screens which are basically OCX files i.e. “ActiveX Control Objects”. The entry screens generally has windows maximize and minimize buttons but for Report user interfaces or those user interfaces on which no tabular data or grid present the maximize button might been disabled. While customizing these Sage 300 user interfaces on which maximize button is disabled, developers may face the difficulty to achieve the same effect on customized OCX. In this blog we are going to discuss simple code changes to be done in the standard code to achieve the same.

New Stuff: Migrate AP Payments from Sage Pro to Sage 300 ERP

The visibility of maximize and minimize buttons for the Accpac user interface container’s is depend on the global declarations done while creating any OCX i.e. depend on the value (True / False) set for the “ACCPACUIResizable” Property.

If this has been set to “True” then both Minimize and Maximize buttons are visible and if it is set as “False” both Maximize and Minimize buttons will not appear.

To make only Minimize button visible on Accpac UI below code changes can be done:

  1. In the module “ACCPACUIGlobals” in general declarations set the “ACCPACUIResizable” property to false.

“Public Const ACCPACUIResizable As Boolean = False”

2. In the user control code in “SaveUISize()” subroutine make the changes enclosed under “’B-GT… ‘E-GT’” below

Private Sub SaveUISize()

On Error Resume Next

Dim lParentHwnd As Long

Dim bMaximized As Boolean

Dim bMinimized As Boolean

‘ Find the top-level parent window (doesn’t ‘ include owner, i.e. caller, windows).

lParentHwnd = GetAncestor(UserControl.hWnd, _GA_ROOT)

If Err.Number = 0 Then

‘B-GT-Commented code line and added code for maximizing button disabling

‘bMaximized = CBool(IsZoomed(lParentHwnd))

bMaximized = False

‘E-GT-Commented code line and added code for maximizing button disabling

bMinimized = CBool(IsIconic(lParentHwnd))

Else

‘ The parent doesn’t have an Hwnd, so assume

‘ it is not maximized or minimized.

bMaximized = False

‘B-GT-Commented code line and added code for maximizing button disabling

‘bMinimized = False

bMinimized = True

‘E-GT-Commented code line and added code for maximizing button disabling

Err.Clear ‘ this error is now handled

End If

If (bMaximized = True) Or (bMinimized = True) Then

‘ GET OUT! DON’T save the size, but DON’T

‘ clear the previous saved size either!

Err.Clear

Exit Sub

End If

‘ IF WE GOT TO HERE, WE NEED TO DEAL WITH THE

‘ ACCPAC PROPERTIES.

With mSession.GetAccpacProperty

.menuID = ACCPACProgramName

.objectID = ACCPACProgramName

‘ See if we need to save/clear the height.

.keyword = UIHEIGHT_KEY

If ScaleHeight <= msMinHeight Then

.PropClear

Else

Dim strUIHeight As String

strUIHeight = CStr(ScaleHeight)

.PropPut CVar(strUIHeight), Len(strUIHeight)

End If

‘ See if we need to clear/save the width.

.keyword = UIWIDTH_KEY

If ScaleWidth <= msMinWidth Then

.PropClear

Else

Dim strUIWidth As String

strUIWidth = CStr(ScaleWidth)

.PropPut CVar(strUIWidth), Len(strUIWidth)

End If

End With ‘ mSession.GetAccpacProperty

Err.Clear

End Sub

The above changes will allow us to get the OCX user interface with only minimize and close button. Kindly refer to below customized user interface for the reference:

As you can see in the screenshot above the “Maximized” button is disabled for the customized OCX.