[Lazarus] Bug 15390 and Showmodal

zeljko zeljko at holobit.net
Thu Apr 19 07:57:53 CEST 2012


On Wednesday 18 of April 2012 21:01:39 Martin wrote:
> On 18/04/2012 19:26, zeljko wrote:
> > On Wednesday 18 of April 2012 20:05:35 patspiper wrote:
> > > On 18/04/12 20:09, Martin wrote:
> > > > On 18/04/2012 17:53, patspiper wrote:
> > > >> On 18/04/12 17:39, Martin wrote:
> > > >>> But this is not a bug.
> > > >>> 
> > > >>> And Delphi docs, IMHO are not making a 100% clear statement
> > 
> > about this.
> > 
> > > >> It is a bug considering that both Delphi and Lazarus docs are clear
> > > >> 
> > > >> about it: ShowModal does not return until the form is closed.
> > > > 
> > > > That's not the point
> > > > 
> > > > 
> > > > 
> > > > The point is: Close <> Destroy
> > > > 
> > > > In fact, with modal active close does hide the form (and sets modal
> > > > 
> > > > result)
> > > 
> > > Closing a modal form hides it indeed, sets ModalResult, and makes
> > > 
> > > ShowModal exit. Hiding is just one step of modal form closing.
> > > 
> > > > In anyway it does not say "until the method close is called".
> > > > 
> > > > It says "form is closed" never mind how it is closed
> > > 
> > > Correct
> > > 
> > > > "closing a form" is not the same as "calling close()"
> > > > 
> > > > 
> > > > 
> > > > "calling close()" is only one of many ways to "close a form".
> > > > 
> > > > e.g during Modal, you can set ModalResult.
> > > 
> > > OK
> > > 
> > > > Depending on close the property CloseAction = caHide, a call to
> > > > 
> > > > Close(), does in the end actually call Hide (or set Visible=False).
> > > > 
> > > > The call to Close can (optional) destroy the form. But the actual
> > > > 
> > > > closing is done by making it invisible.
> > > > 
> > > > 
> > > > 
> > > > So who says, that calling Hide() is not a way of closing the form?
> > > 
> > > Try applying the same logic with CloseAction = caNone ;)
> > > 
> > > 
> > > 
> > > Furthermore, Hide() does not trigger the OnCloseQuery and OnClose
> > 
> > events.
> > 
> > > > It does the same thing. (the 2 calls have different additional side
> > > > 
> > > > effects, but that is a different story)
> > > 
> > > <joking mode on> Pulling off the computer's power plug is yet another
> > > 
> > > way of closing a form with different side effects<joking mode off>
> > > 
> > > 
> > > 
> > > Finally, the force (Delphi) is not on your side :D
> > 
> > Maybe I will implement it to be delphi compat but first must test it
> > on all platforms. Also I would like to have property inside
> > TCustomForm which can
> > 
> > change behaviour of ShowModal() when Hide() is called.
> > 
> > 1.I like current implementation because you can have "alive" form to
> > show again and again.
> > 
> > 2.Delphi implementation just hides form but stays in modal loop, and
> > other forms are accessible - I don't like this solution but I respect
> > other ppl needs.
> > 
> > 
> > So what property name could be goodfor such behaviour ?
> > 
> > HideModalBehaviour = hmbLazarus (default), hmbDelphi( Delphi
> > compatibile) ?
> 
> I don't thing it's worth a property.
> 
> 1) Close can always be used for current behaviour.
> 2) Hide and the setting ModalResult can be used too

Yes, you're right. New property isn't needed ,so best would be to add new 
patch so Hide() is Delphi compat, and for scenario I like, Close with 
CloseAction := caHide can be called and everything works fine.

zeljko

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120419/5710d185/attachment-0003.html>


More information about the Lazarus mailing list