On 18/04/12 17:27, zeljko wrote:
On Wednesday 18 of April 2012 15:22:27 Martin wrote:
> On 18/04/2012 11:53, Hans-Peter Diettrich wrote:
> > patspiper schrieb:
> >>> No, FormClose() isn't called when modal form is hidden via Hide();
> >>
> >> Correct
> >>
> >>> , so form still exists and it can be called with ShowModal() or
> >>> Show() again.
> >>
> >> I beg to differ here as Showmodal should not exit unless the modal
> >> form is closed.
> >
> > A modal form (dialog) can be used to accept multiple user entries
> > (filename...). Then the form object must stay alife until the
> > application has read all entries. That's why a modal form only hides
> > itself on exit.
>
> closed <> destroy
>
> Close() depends on close action, which include free and hide.
> Close() on a modal Form in LCL ignores close action and always hides (by
> setting ModalResult = mrCancel.
>
> Hide() or Visible:=False does not set ModalResult
>
> In fact if in Delphi you hide a modalform, then ShowModal does not
> return. I don't know, if this is intended or accidental behaviour.
> While of course you can use this, there is a real danger of such a modal
> form become hidden, with no means of ever getting it back or exiting it.
>
> Using a hidden modal form, to block all other forms (even if intended)
> appears to me an abuse of the modal concept. If an application wants to
> do this, it should do this explicitly. (But that is my personal opinion)
>
> In LCL there is
> Screen.DisableForms()
+1 , that's why I implemented hiding of modal form as it is - it
simply works on all platforms, and Delphi behaviour looks pretty
unlogical to me (but even that can work - see my today patches
attached at issue).
Patch is good but has one bug (Pls check bug report)
Stephano
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus