[Lazarus] RE : Embedding a standard dialogue
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Wed Apr 18 12:08:28 CEST 2012
Ludo Brands wrote:
>> OK, If I can lead on from this. The cause of bug 21792 that I raised
>> yesterday is, I'm told, that I'd set the main form visible but
>> minimised. The reason I'd done this is that before the form was
>> displayed I wanted the user to provide database login credentials, I
>> couldn't rely on a standard dialogue for that since I also needed to
>> have him select what kind of database- PostgreSQL or Firefox-
>> as well as
>> the server and possibly port.
>>
>> What is the correct thing to do in this sort of situation?
>> I've seen a
>> description of a hack for Delphi which relied on creating the
>> main form
>> manually, should something like that be attempted for Lazarus?
>>
>> Or should I simply redo the app so that the login is the main form?
>>
>
> In the OnCreate handler for the main form, you can create your login form
> and do a showmodal of that form. In Oncreate the main form isn't visible
> yet. In case the user can't provide correct credentials, call
> application.terminate: under gtk2 the main form will never show, windows
> shows the main form in a very short flash which can be avoided by setting
> windowstate:=wsminimized; just before application.terminate.
>
> procedure TFormMain.FormCreate(Sender: TObject);
> begin
> FormLogin:=TFormLogin.create(self);
> while true do
> case FormLogin.showmodal of
> mrAbort:
> begin
> windowstate:=wsminimized;
> application.terminate;
> break;
> end;
> mrOK:
> break;
> end;
> FormLogin.destroy;
> end;
>
> This will loop on the login form until the user aborts (mrAbort) or the
> correct login credentials are provided (mrOK). You can do the credential
> check in the login form or in the mrOK case if you like.
Thanks Ludo, "clear as a bell" :-)
I'm already tinkering in various apps with getting things to happen at
various times relative to the validity of the main form object, it just
hadn't occurred to me that I could forcibly create a premature login form.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list