AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Loginform soll geschlossen werden bevor MainForm erscheint
Thema durchsuchen
Ansicht
Themen-Optionen

Loginform soll geschlossen werden bevor MainForm erscheint

Ein Thema von Mackhack · begonnen am 25. Sep 2006 · letzter Beitrag vom 26. Sep 2006
Antwort Antwort
Seite 2 von 4     12 34      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 15:58
Zitat von MuTzE:
MuTzE bitte und nich Muetze!!!!!!!!!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 16:04
@moonwhaler: MuTzE ) seine Version ist aber doch ein klein wenig kürzer. Und auch gilt, das ich den Projektquelltext nicht so gerne anfasse. Da kommt dann Delphi ab und an doch durcheinander.

Die Version im OnCreate ist latürnich noch eleganter. Sagen wir:
MuTzE's Version mit meiner Anmerkung und MuTzE's abschließenden Kommentar ist optimal*, ergo:

Delphi-Quellcode:
Procedure TMyMainForm.OnCreate (Sender : TObject);
Begin
  If Not LoginCorrect then Application.Terminate;
End;
* jedenfalls meine Meinung.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#13

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 16:11
Also ich hab ja hier schon nen Programm, aber da haut das nich hin, wenn ich das Passwortformular zeige im OnCreate! Es geht bei mir nur im OnShow Modus, wobei, das wie du schon sagtest immer kommt, wenn das Formular eingeblendet wird.

Man könnte aber noch eine 2. Varible einbinden, anhand der überprüft wird, ob das Passwort bereits richtig eingegeben wurde.


Hauptformular:

Delphi-Quellcode:
public
  Passed: Booloean;
end;

procedure TMainFrm.FormShow(Sender: TObject);
begin
  if not Passed then
   PasswordFrm.ShowModal;
end;

Passwortformluar:

Delphi-Quellcode:
procedure TPasswordFrm.AcceptBtnClick(Sender: TObject);
begin
  if PasswordEdit.Text = 'Passwortthen
   begin
    Accepted := True;
    MainFrm.Passed := True;
    Close;
   end
  else
   begin
    ShowMessage('Das Passwort ist ungültig!');
    PasswordEdit.Clear;
  end;
end;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 16:24
Ich kenn das Problem. Weil ich Dir erstmal gar nicht geglaubt habe, hab ich also einen Drei-Zeiler geschrieben, mit der Passwortabfrage im OnCreate. Dann darf aber kein anderes Formular automatisch instantiiert werden.

Dr Projekt-Quelltext sieht also so aus:

Delphi-Quellcode:
Begin
  Application.Initialize;
  Application.CreateForm(TMyMainForm, MyMainForm);
  Application.Run
End.
Und die MyMainForm wie oben beschrieben. Dann kann ich mich einloggen (oder nicht).
Delphi-Quellcode:
Procedure TMyMainForm.FormCreate (Sender : TObject);
Begin
  If InputBox('Login','Benutzername','') <> 'MuTzE'  Then
    Application.Terminate
  Else Begin
    // Initialize application's datamodules, forms etc.
  End;
End;
wichtig ist, das das 'Application.Terminate' ja nicht sofort aufhört, sondern nur eine WM_QUIT Message in die Messagequeue schiebt. Das Application.Run fängt dann an, die Messages zu verarbeiten. Mehr oder minder früh wird dann das WM_QUIT entdeckt. Deshalb ist es imho wichtig, wirklich nur die eine Form im Hauptprogramm der Anwendung zu instantiieren.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#15

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 17:11
Hi,

vielen Dank euch allen hier. Werd mich da mal durchwurschteln heute abend!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 19:54
Zitat von alzaimar:
wichtig ist, das das 'Application.Terminate' ja nicht sofort aufhört, sondern nur eine WM_QUIT Message in die Messagequeue schiebt. Das Application.Run fängt dann an, die Messages zu verarbeiten. Mehr oder minder früh wird dann das WM_QUIT entdeckt.
..und weil das ungefähr so ist, geht es im FormCreate-Eventhandler der MainForm auch nicht, da nämlich die MainForm zu diesem Zeitpunkt schlicht schon instantiiert ist! ...Und weshalb also bei genauem Hinsehen dieses MainWindow beim Programm-Abbruch doch noch einmal minmalst aufflackert. Und das will Mackhack ja gerade nicht.

So wie es aussieht, scheint nur die Methode von igel457 und moonwahler diesbezüglich was zu taugen (allerdings fehlte irgendwie im positiven Login-Fall jeweils noch ein Free, oder?). Nur durch ein erstes Aufrufen von Application.CreateForm scheint die MainForm definiert zu werden, so dass mittels 'nur' TForm.Create-Anweisungen ohne Schwierigkeiten davor andere Formen erzeugt und genutzt werden können.

..und warum nicht im Projekt-File herumschreiben. Das ist imo Raum für Quellcode wie jeder andere!
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#17

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 20:10
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 21:13
Zitat von MuTzE:
Ja bitte? Ich habe deinen Code nochmal kurz ausgetestet und bei diesem flackert es eben auch. Also genau wie es NICHT gewünscht war. Mach deine MainForm mal schön knallrot, dann kannst du es nicht übersehen.

edit: gut gut, ich meinte jetzt natürlich das MainForm-Flackern, welches ebenfalls für einen Bruchteil einer Sekunde in dem Falle zu sehen ist, in dem man den Login abbricht. Dann nämlich taucht das MainWindow nochmal ganz kurz auf, weil es ja eben schon createt ist. Und ich nehme doch mal sehr schwer an, dieses Flackern mag Mackhack mindestens genausowenig....
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#19

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 22:02
Genau,

ich will kein Flackern des Login-Fensters. Also muss ich als MainForm das Login-Fenster in den Projekt-Optionen einstellen sehe ich das richtig?
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#20

Re: Loginform soll geschlossen werden bevor MainForm erschei

  Alt 25. Sep 2006, 22:07
Bei mir flackert nicht das Loginfenster, sondern das Hauptformular, wenn man das Programm schon beim Loginfenster beendet.

Du müsstest dich mal entscheiden, ob du willst das es nicht flackert oder ob du etwas im projectcode veränderst, das du ja nicht gerne machst, wie du meintest. Ich denke mehr Optionen gibt es nicht, es sei denn jemand finde eine.

____________
EDIT:

Ähhhhhh, der letzte Absatz kommt einfach weg, da hab ich mich wohl verlesen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.
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