This article was previously published under Q150193
This article has been archived. It is offered "as is" and will no longer be updated.
The Sheridan Command button does not stay invisible although the Visibleproperty is set to False. This can occur if the Visible property of aSheridan Command button was set to False in a procedure in another form.
Use the ShowWindow API function instead of the Visible property of thebutton to hide/show the button. This function takes only two parameters: awindow handle that becomes the hWnd property of the Sheridan control, and aconstant that determines how to show the window.
The declaration below can be pasted in the General...Declarations sectionof the form where the routine is to hide the window:
#If Win16 Then Private Declare Function ShowWindow Lib "User" (ByVal hWnd As Integer, ByVal nCmdShow As Integer) As Integer #Else Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long #EndIf Const SW_SHOW = 5 Const SW_HIDE = 0
To hide a Sheridan Command button, issue a command similar to thefollowing:
ShowWindow Form1.SSCOmmand1.HWnd, SW_HIDE
and, to show a button:
ShowWindow Form1.SSCommand1.HWnd, SW_SHOW
Microsoft has confirmed this to be an issue in the Microsoft productslisted at the beginning of this article.
Steps to Reproduce Problem
Start a new project. Form1 is created by default. On Form1 place a regular Command button and a Sheridan SSCommand button. Go to the Properties window and change the TabIndex property of the SSCommand1 control to 0.
In the Form_Load event for Form1, place the following code:
Private Sub Form_Load() Form2.Show End Sub
Insert another form into the project. On Form2, place a regular command button. In the Command1_Click event for the button on Form2, place the following code:
Private Sub Command1_Click() Form1.SSCommand1.Visible = False End Sub
Run the project by pressing the F5 key. Bring Form2 to the foreground andpress the Command button to make the Sheridan Command button on Form1disappear. Click anywhere on Form1 to bring it to the foreground. Noticethat SSCommand1 reappears.
To correct this problem with the workaround, paste the declaration forShowWindow in the Form...Declarations section of Form2. Instead of thecommand to make Visible property false, use the following command:
Call ShowWindow(Form1.SSCOmmand1.HWnd, SW_HIDE)
The button will not reappear until the following command is issued:
Microsoft Visual Basic 4.0 Standard Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 Professional Edition, Microsoft Visual Basic 4.0 16-bit Enterprise Edition, Microsoft Visual Basic 4.0 32-Bit Enterprise Edition