Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
BUG: Old bug - releasing the form from toolbar
Message
From
04/10/2005 13:53:04
 
 
To
04/10/2005 08:05:06
General information
Forum:
Visual FoxPro
Category:
Visual FoxPro Beta
Miscellaneous
Thread ID:
01054353
Message ID:
01055969
Views:
30
>>>Hi,
>>>
>>>Still can't release form using button on toolbar. Try to create a form with toolbar with a button. In the button's click event release the form.
>>>After click the form is still on screen and no way to close it.
>>>
>>>Here is the sample code:
>>>
>>>
>>>local f1
>>>f1 = createobject('frm')
>>>f1.show
>>>read events
>>>
>>>* ----------
>>>define class frm as Form
>>>
>>>	AutoCenter = .t.
>>>	ShowWindow = 2
>>>	Toolbar = ''
>>>
>>>	procedure Init
>>>		ThisForm.Visible = .t.
>>>		ThisForm.Toolbar = createobject('tbr')
>>>		ThisForm.Toolbar.Dock(0)
>>>		ThisForm.Toolbar.Show
>>>	endproc
>>>
>>>	procedure Release
>>>		ThisForm.Toolbar = .NULL.
>>>	endproc
>>>
>>>	procedure Unload
>>>		clear events
>>>	endproc
>>>
>>>enddefine
>>>
>>>* ----------
>>>define class tbr as Toolbar
>>>
>>>	ShowWindow = 1
>>>
>>>	add object btn as CommandButton;
>>>		with Width=100, Height=25, Caption="Close window"
>>>
>>>	procedure btn.Click
>>>		_SCREEN.ActiveForm.Release()
>>>	endproc
>>>
>>>enddefine
>>>
>>>
>>>This bug force me to include a timer on the form and release the form from timer event. Toolbar's button only starts the timer.
>>>
>>>Best,
>>>
>>>Janusz Czudek
>>>WORD Software
>>>http://www.wordsoft.com.pl
>>
>>This is a deadlock bug.
>>The btn.Click it lock the toolbar live semaphore.
>>Workaround:
>>
>>local f1
>>f1 = createobject('frm')
>>f1.show
>>read events
>>
>>* ----------
>>define class frm as Form
>>
>>	AutoCenter = .t.
>>	ShowWindow = 2
>>	Toolbar = ''
>>
>>	procedure Init
>>		ThisForm.Visible = .t.
>>		ThisForm.Toolbar = createobject('tbr')
>>		ThisForm.Toolbar.Dock(0)
>>		ThisForm.Toolbar.Show
>>	endproc
>>
>>	procedure Unload
>>		clear events
>>	endproc
>>
>>enddefine
>>
>>* ----------
>>define class tbr as Toolbar
>>
>>	ShowWindow = 1
>>
>>	add object btn as CommandButton;
>>		with Width=100, Height=25, Caption="Close window"
>>
>>	procedure btn.Click
>>		DECLARE SHORT PostMessage IN WIN32API INTEGER,INTEGER,INTEGER,INTEGER
>>		=PostMessage(_SCREEN.ActiveForm.HWnd,16,0,0)
>>		CLEAR DLLS PostMessage
>>	endproc
>>
>>enddefine
>>
>
>Yea... Just another workaround. But you do confirm this is a bug, don't you?

Confirm. Release must to release all the references of the Form,
and when click finishes the semaphore of the form goes to zero
and the form it begins the destroy ...
Previous
Reply
Map
View

Click here to load this message in the networking platform