Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ShowModal funktioniert nicht (https://www.delphipraxis.net/155201-showmodal-funktioniert-nicht.html)

youuu 12. Okt 2010 21:02

ShowModal funktioniert nicht
 
Hi,

ich diesen Code im Programm Quelltext, um einen Login zu realisieren.
Delphi-Quellcode:
    if frm_Login.ShowModal <> mrOk then
      Exit
    else
    Begin
      Application.Title:= 'verwaltung';
      Application.CreateForm(Tfrm_Start, frm_Start);
    End;
in der Login Form habe ich einen Button der

Delphi-Quellcode:
ModalResult:= mrOk;
übergibt, jedoch wird immer
Delphi-Quellcode:
if frm_Login.ShowModal <> mrOk then Exit
ausgeführt, was kann der Grund sein?

Björn Ole 12. Okt 2010 21:08

AW: ShowModal funktioniert nicht
 
So funktioniert das bei mir ganz gut:
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True;
with TLoginForm.Create(nil) do
begin
  try
    if ShowModal = mrOk then
    begin
      Application.CreateForm(TMainForm, MainForm);
      Application.Run;
    end;
  finally
    Free;  
  end;
end;
Edit: Huch, 100ster! :party:

stahli 12. Okt 2010 21:09

AW: ShowModal funktioniert nicht
 
Zeig mal mehr...

(Ups, kein roter Kasten?)

youuu 12. Okt 2010 21:21

AW: ShowModal funktioniert nicht
 
Zitat:

Zitat von Björn Ole (Beitrag 1055421)
So funktioniert das bei mir ganz gut:
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskbar := True;
with TLoginForm.Create(nil) do
begin
  try
    if ShowModal = mrOk then
    begin
      Application.CreateForm(TMainForm, MainForm);
      Application.Run;
    end;
  finally
    Free;  
  end;
end;
Edit: Huch, 100ster! :party:

Damit erhalte ich eine Zugriffsverletzung

youuu 12. Okt 2010 21:23

AW: ShowModal funktioniert nicht
 
Zitat:

Zitat von stahli (Beitrag 1055422)
Zeig mal mehr...

(Ups, kein roter Kasten?)


Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskBar:= true;

  frm_Login:= Tfrm_Login.Create(nil);
  try
    if frm_Login.ShowModal = mrOk then
      Application.CreateForm(Tfrm_Start, frm_Start);
  finally
    frm_Login.Free;
  end;
  Application.Run;
end.
Login Form:

Delphi-Quellcode:
procedure Tfrm_Login.ButtonLoginClick(Sender: TObject);
begin
  ModalResult:= mrOk;
end;

Peter1999 12. Okt 2010 21:26

AW: ShowModal funktioniert nicht
 
Sicher, dass da nicht mehr steht?

Lass mich raten :glaskugel:, da steht noch irgendwo ein

Code:
close;
was da NICHT hingehört.
Das Modalresult sollte ohnehin über die Property des Buttons gesetzt werden und nicht im Quelltext.

Björn Ole 12. Okt 2010 21:28

AW: ShowModal funktioniert nicht
 
Abgesehen von
Delphi-Quellcode:
{frm_Login.}Free;
geht dein Code bei mir.

Ha, roter Kasten kam ausnahmsweise mal. :P


Zitat:

Zitat von Peter1999 (Beitrag 1055425)
Das Modalresult sollte ohnehin über die Property des Buttons gesetzt werden und nicht im Quelltext.

Wo ist da der Unterschied?

stahli 12. Okt 2010 21:29

AW: ShowModal funktioniert nicht
 
Delphi-Quellcode:
    finally
      frm_Login.Free;
    end;
Das Objekt "frm_Login" ist dort sicher noch nil, da Du die Forminstanz nicht zugewiesen hast.

youuu 12. Okt 2010 21:31

AW: ShowModal funktioniert nicht
 
Zitat:

Zitat von Peter1999 (Beitrag 1055425)
Sicher, dass da nicht mehr steht?

Lass mich raten :glaskugel:, da steht noch irgendwo ein

Code:
close;
was da NICHT hingehört.
Das Modalresult sollte ohnehin über die Property des Buttons gesetzt werden und nicht im Quelltext.

So erstens, Ihr werdet lachen -.-
Ich hab komischerweise ein
Delphi-Quellcode:
Closed;
bei dem Ereigenis Form Close gesetzt, Gott weiß warum, ich aufjedenfall nicht :D

Auf dein Property Hinweiß einzugehen, das war gerade nur aus Test Zwecken, weil es davor nicht funktionierte :)

xZise 12. Okt 2010 21:35

AW: ShowModal funktioniert nicht
 
Moin,
könntest du ein bisschen mehr Code von Tfrm_Login zeigen? Vielleicht setzt du später ModalResult neu?

@Peter1999: Was ist wenn er vorher was testen will, aber aktuell zu Testzwecken nichts macht:
Delphi-Quellcode:
procedure Tfrm_Login.ButtonLoginClick(Sender: TObject);
begin
  if (Username.Text <> '') then
    ModalResult:= mrOk;
end;
Außerdem würde ich da nicht die globale Variable nehmen, also definiere dir eine lokale Variable im Projekt Source Code. So verhinderst du eventuelle Quereffekte. Das geht natürlich nicht, wenn du später auf die globale Variable wieder zugreifst.

Zitat:

Zitat von stahli (Beitrag 1055427)
Delphi-Quellcode:
    finally
      frm_Login.Free;
    end;
Das Objekt "frm_Login" ist dort sicher noch nil, da Du die Forminstanz nicht zugewiesen hast.

Nicht, wenn du es vorher initialisierst.

MfG
Fabian


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Seite 1 von 2  1 2      

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