Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Loginform soll geschlossen werden bevor MainForm erscheint (https://www.delphipraxis.net/77802-loginform-soll-geschlossen-werden-bevor-mainform-erscheint.html)

marabu 26. Sep 2006 08:40

Re: Loginform soll geschlossen werden bevor MainForm erschei
 
Hi all,

auch mir missfällt das Abändern des Projekt-Quelltextes. Mir missfällt aber auch so ziemlich jede andere Restriktion. Bei Datenbankanwendungen gibt es einen sehr komfortablen Ansatz, der lediglich die automatische Erzeugung des Hauptdatenmoduls vor allen anderen Datenmodulen und Formularen erfordert. Im Ereignis OnCreate() werden dort zuerst die user credentials entgegengenommen. Scheitert der Verbindungsaufbau mit diesen Angaben, dann kann die Anwendung einfach verlassen werden.

Delphi-Quellcode:
procedure HaltApplication(msg: String);
begin
  if msg <> '' then
    ShowMessage(msg); // shutdown reason
  with Application do
  begin
    Terminate;        // walk the TermProc chain
    Free;             // free resources
    Halt;             // shut down
  end;
end;

procedure TDM.DataModuleCreate(Sender: TObject);
var
  userName, passWord, roleName: String;
  canceled: Boolean;
begin
  with TLoginForm.Create(nil) do
  begin
    canceled := not Execute();
    Free;
  end;

  if canceled then
    HaltApplication('');

  Connection.ConnectionString := GetConnectionString(userName, passWord, roleName);

  try
    Connection.Connected := True;
  except
    on E: Exception do
      HaltApplication(E.message);
  end;

  // ...
end;
In allen anderen Fällen hat sich bei mir das Einklinken in die InitProc bewährt.

Grüße vom marabu

hoika 26. Sep 2006 09:06

Re: Loginform soll geschlossen werden bevor MainForm erschei
 
Hallo,

also ich finde, das "Rumwurschteln im Projekt-Quellcode" am einfachsten.
Allerdings steht in meiner DPR nur 1 Zeile

Delphi-Quellcode:
DoStart;
naja, program bla; uses unit_Start; usw. ;)

und die Unit Start enthält dann halt

Delphi-Quellcode:
unit_Start;

bla

procedure DoStart;
begin
  Application.Initialize;

  if not ExcecuteFormLogin32(Application) then Exit;

  Application.CreateForm(TForm_MainZES, Form_MainZES);
  Application.Run;
end;

Heiko

moonwhaler 26. Sep 2006 10:08

Re: Loginform soll geschlossen werden bevor MainForm erschei
 
Zugegeben: Den Projektquelltext für diesen Zweck zu modifizieren mag dem ein oder anderen nicht gefallen, für mich persönlich ist es eine elegante und absolut fehlerfreie Möglichkeit vor Ausführung von egal-was-auch-immer diverse Einstellungen und Abfragen vorzunehmen. Probleme hatte ich damit bisher nie und diese Art von Programmierung nutze ich jetzt seit Delphi 5 und aufwärts ohne jemals damit auf die Nase zu fallen.

Letztlich ist das natürlich Geschmackssache, denn jeder hat so seine Eigenarten und Vorstellungen, wenn es ums Programmieren geht. Viele Wege führen nach Rom.

In diesem Sinne.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz