[Lazarus] Fw: Mantis bugid 0015390 - showmodal closing when hide called.
Justin Smyth
delphian at smythconsulting.net
Wed Apr 18 00:40:20 CEST 2012
----- Original Message -----
From: Justin Smyth
To: zeljko at holobit.net
Sent: Wednesday, April 18, 2012 8:39 AM
Subject: Re: [Lazarus] Mantis bugid 0015390 - showmodal closing when hide called.
You have it wrong.
as per other comments showmodal SHOULD NOT exit till the form is closed
an example of live code in one of my products
main form of my media player , it gets hidden to show a trayicon, when the user clicks show it unhides , if i had to create the form again i would have to re init all the components on the main form .. thats crazy. where as hide and show just changes the visible component of the form. if you exit the showmodal it is wrong .. only when the form is close should show modal finish.
do i make my point clear ? you are completely wrong assuming hiding the form should close the form. you are breaking compabity with programs ported from delphi. sorry if i seem rude but this has caused great issues in a product used in the work place
please fix this or remove this peace of code.
Justin
----- Original Message -----
From: zeljko
To: Justin Smyth
Sent: Wednesday, April 18, 2012 12:29 AM
Subject: Re: [Lazarus] Mantis bugid 0015390 - showmodal closing when hide called.
On Tuesday 17 of April 2012 16:01:30 Justin Smyth wrote:
> sample code uploaded to mantis.
>
> i'm not doing anything fancy
>
> The Main form has a button which creates a new form , does a show modal and
> free's it when its finished ( Closed ) i've put in a messagedlg to show
> when its been finished.
>
> the Second form on formactivate ( and tested in formshow) i turn on a timer
> and that time when the timer event is run it does
>
> timer1.enabled:=false;
> hide;
>
> soon as the hide happens is when the showmodal exits.
And your example shows same mistake.
1.you create modal form
2.called showmodal (inside show modal you called Hide; via timer) - of course modal loop is finished when an modal form is hidden, and then your dialog is shown, and after that you are freeing that form .. so what do you expect ?
Here is code which works 100% (frmShowModal is already created inside lpr - so autocreated form, and no need to create another one).
Change code in ShowModalMain.pas of your example like this:
procedure TForm1.Button1Click(Sender: TObject);
begin
// frmShowModal := TfrmShowModal.Create(self);
frmShowModal.ShowModal;
Messagedlg('frmShowModal Exited',mtwarning,[mbok],0);
// frmShowModal.free;
end;
You should not Free modal form after showModal if you want it to be "live" for hiding and showmodal or show again later.
When you call Hide; on modal form, it hides it self and modal loops stops.When modal loop stops in such case your previously modal form is just like any other hidden form.
zeljko
>
> Justin
> ----- Original Message -----
> From: zeljko
> To: Justin Smyth
> Cc: lazarus at lists.lazarus.freepascal.org
> Sent: Tuesday, April 17, 2012 7:12 PM
> Subject: Re: [Lazarus] Mantis bugid 0015390 - showmodal closing when hide
> called.
>
> On Tuesday 17 of April 2012 11:05:08 Justin Smyth wrote:
> > Yeah i will bring post a example over the next few days
> >
> >
> >
> >
> >
> > what plat forms was it tested on ?
>
> I've tested qt, gtk2 (linux) , win32 and qt (windows) and qt under
> macosx.
>
>
>
>
> zeljko
>
> > ----- Original Message -----
> >
> > From: zeljko
> >
> > To: lazarus at lists.lazarus.freepascal.org ; Justin Smyth
> >
> > Sent: Tuesday, April 17, 2012 4:27 AM
> >
> > Subject: Re: [Lazarus] Mantis bugid 0015390 - showmodal closing when
> > hide
> >
> > called.
> >
> > On Monday 16 of April 2012 16:28:09 Justin Smyth wrote:
> > > I've noted this but was fixed on the 21-2 this year but i've just
> > >
> > > upgraded
> > >
> > >
> > >
> > > Lazarus from 35368 to 36784 and have found this issue still exists.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > Basically i Create and ShowModal my applications main form , once it
> > >
> > > hits
> > >
> > >
> > >
> > > formshow it starts a thread to monitor another application and once a
> > >
> > >
> > >
> > > trigger condition is met this form is hidden ( to prevent the user
> > > from
> > >
> > >
> > >
> > > entering data until other applications have finished there data look
> > >
> > > up)
> > >
> > >
> > >
> > > and i show the form again once its been populated with new data . but
> > >
> > > with
> > >
> > >
> > >
> > > the hide the showmodal exits ( which i dont want to happen, the form
> > >
> > > hasnt
> > >
> > >
> > >
> > > closed it just hidden while i wait for some data to come back from
> > >
> > > another
> > >
> > >
> > >
> > > application).
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > I almost think a variable of IsHidden might be needed so that block
> > > of
> > >
> > > code
> > >
> > >
> > >
> > > assoated with bugid 15390 doesnt get called ( or the break in that
> > >
> > > section
> > >
> > >
> > >
> > > doesnt get called).
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > I can provide code if needed , i'd have to bring it home from work
> > > but
> > >
> > >
> > >
> > > thats ok ( From Telstra) Thanks.
> >
> > You must provide example. It works for me, also example which is added
> > by
> >
> > Stephano today is wrong.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > zeljko
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120418/aa578a47/attachment-0002.html>
More information about the Lazarus
mailing list