Microsoft KB Archive/197276

= PRB: Closing Top-Level Form with Docked Toolbar Leaves Image =

Article ID: 197276

Article Last Modified on 8/11/1999

-

APPLIES TO


 * Microsoft Visual FoxPro 5.0 Standard Edition
 * Microsoft Visual FoxPro 5.0a
 * Microsoft Visual FoxPro 6.0 Professional Edition

-



This article was previously published under Q197276



SYMPTOMS
A phantom image of a form is left on the screen after you have closed it. You cannot close or move this image of the form, and it stays on the Windows taskbar. After you click on the taskbar button on the Windows taskbar, the image of the form might disappear but the taskbar button does not close.



CAUSE
This can be occur when you use a docked toolbar that has code in one of the toolbar buttons to close a top-level form. Top-level forms are also known as SDI forms.



RESOLUTION
Undock the toolbar before using a button on the toolbar to close the form.

You can undock the toolbar by copying the following code into the Click event of the Exit button on the toolbar: IF This.Parent.Docked This.Parent.Dock(-1) ENDIF



Steps to Reproduce Behavior
  Copy the following code into a new program file and save it: PUBLIC oform1 oform1=CREATEOBJECT("form1") oform1.Show RETURN

**************************************************     *-- Form:         form1 *-- ParentClass: form *-- BaseClass:   form *     DEFINE CLASS form1 AS form

ShowWindow = 2 DoCreate = .T.        AutoCenter = .T.         Caption = "SDI Form With Toolbar" Name = "Form1" tool = .F.

PROCEDURE Activate WITH THIS IF TYPE(".tool")!='O' AND !ISNULL(.TOOL) .TOOL = CREATE("MTOOL") .TOOL.SHOW ENDIF ENDWITH ENDPROC

PROCEDURE QueryUnload THIS.TOOL.cmdEXIT.CLICK ENDPROC

ENDDEFINE *-- EndDefine: form1 **************************************************

**************************************************     *-- Class:        mtool *-- ParentClass: toolbar *-- BaseClass:   toolbar *     DEFINE CLASS mtool AS toolbar

Caption = "Toolbar1" Height = 36 Left = 104 Top = 22 Width = 47 ControlBox = .F.        ShowWindow = 1 Name = "mtool"

ADD OBJECT cmdexit AS commandbutton WITH ; AutoSize = .T., ; Top = 5, ; Left = 5, ; Height = 27, ; Width = 37, ; Caption = "Exit", ; Name = "cmdEXIT"

PROCEDURE cmdexit.Click *!*IF THIS.PARENT.DOCKED *!*  THIS.PARENT.DOCK(-1) *!*ENDIF oform1.RELEASE ENDPROC ENDDEFINE *     *-- EndDefine: mtool **************************************************                            Run the program. The toolbar with the Exit button should appear on top of the form. Note that the ShowWindow property of the form in the code above is 2, which means it is a top-level form. Click Exit to close the form and toolbar. Run the program again. This time drag the toolbar to one of the sides of the form and dock it. Click Exit. The toolbar closes, but the form does not close. Try closing the form or moving it. Neither method works. Close Visual FoxPro to clear out the form.  To see the resolution to this problem, uncomment the following lines from the cmdexit.Click Procedure in the program code: IF THIS.PARENT.DOCKED THIS.PARENT.DOC(-1) ENDIF  Run the program, dock the toolbar, and click Exit. You might be able to see the toolbar undock before the form closes.</ol>

Keywords: kboop kbprb kbpending KB197276

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.