Einzelnen Beitrag anzeigen

moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 14:53
Ich habe das in mehreren kommerziellen Applikationen wie folgt gelöst und fahre sehr gut damit:
Delphi-Quellcode:
begin
  Application.Initialize;

  if ( not Assigned( FPassword ) ) then
    FPassword := TFPassword.Create( FPassword );

  if ( not Session.Users.LoadFromFile( ApplicationPath +
                                       c_ConfigDir + 'Users.xml' ) ) then
    mBox( _( 'FEHLER!' ),
          _( 'Ein Fehler beim Lesen der Benutzerdaten ist aufgetreten. '+
             'Login NUR Superuser möglich. Abbruch!' ),
          TRUE );

  if ( FPassword.Check( mode_start, TRUE, FALSE ) = pass_ok ) then
  begin
    Application.CreateForm(TFUserManager, FUserManager);
    Application.CreateForm(TFTrackoutManager, FTrackoutManager);

    Application.Run;
  end else
  begin
    Session.Free();
    FPassword.Free();
  end;
end.
Nachtrag! Die Funktion CHECK im Formular / Unit "FPassword":
Delphi-Quellcode:
function TFPassword.Check( mode: TMode;
                           ShowCloseButton: Boolean;
                           ShowOKButtonOnly: Boolean = FALSE ): TPasswordResultType;
begin
  result := pass_failed;
  MayClose := FALSE;
  PWResult := pass_failed;

  accessmode := mode;

  if ( ShowOKButtonOnly ) then
    button_cancel.Enabled := FALSE
  else
    button_cancel.Enabled := TRUE;

  if ( showCloseButton ) then
  begin
    button_cancel.ModalResult := mrAbort;
    button_cancel.Caption := _( '&Beenden' );
  end else begin
    button_cancel.ModalResult := mrCancel;
    button_cancel.Caption := _( '&Abbrechen' );
  end;

  // If the workstation has a valid login, quit here...
  if ( Session.Active ) then
  begin
    if ( ( ( Session.CheckUserRights( mode ) ) AND
           ( Session.Users.Count > 0 ) ) OR
         ( Session.UserType = type_superuser ) ) then
    begin
      result := pass_ok;
      exit;
    end else
    begin
      if ( mBox( _( 'Zugriff verweigert!' ),
                 _( 'Sie besitzen nicht die nötigen Rechte, um auf diese ' +
                    'Resource zugreifen zu können. Wollen Sie den Vorgang ' +
                    'abbrechen?' ), FALSE ) ) then
        exit;
    end;
  end;

  self.ShowModal();

  result := PWResult;
  accessmode := mode_none;
  resetInput();

  close();
end;
  Mit Zitat antworten Zitat