Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormClose aufrufen und ausführen !!! (https://www.delphipraxis.net/95741-formclose-aufrufen-und-ausfuehren.html)

HolgerCW 12. Jul 2007 12:02


FormClose aufrufen und ausführen !!!
 
Hallo zusammen,

möchte aus einer procedure die TForm.FormClose aufrufen, so dass sich das Fenster TForm auch schliesst.

So habe ich es versucht:

Delphi-Quellcode:
procedure TFormPasswort.BitBtnOKClick(Sender: TObject);
var
 Action: TCloseAction;
begin
 Action := caHide;
 FormPasswort.FormClose(Sender, Action);
end;

procedure TFormPasswort.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ED_Passwort1.text := '';
 ED_Passwort2.text := '';
end;
Es geht nur über das X oben rechts auf der Form. Wie schaffe ich das über den BitBtnOK ?

Gruss

Holger

Luckie 12. Jul 2007 12:04

Re: FormClose aufrufen und ausführen !!!
 
Einfach die Methode Close aufrufen.

DeddyH 12. Jul 2007 12:06

Re: FormClose aufrufen und ausführen !!!
 
Versuch es mal so:
Delphi-Quellcode:
procedure TFormPasswort.BitBtnOKClick(Sender: TObject);
begin
  FormPasswort.Close;
end;

procedure TFormPasswort.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caHide;
  ED_Passwort1.text := '';
  ED_Passwort2.text := '';
end;

RavenIV 12. Jul 2007 12:07

Re: FormClose aufrufen und ausführen !!!
 
Falls Du ein anderes Form schliessen willst, musst Du die unit mit dem zu schliessenden Form in deine unit aufnehmen in den Uses.


Dann machst Du
Delphi-Quellcode:
procedure TMainForm.BuSchliessenClick (Sender: TObject);
begin
  FormXY.Close;
end;

fLaSh11 12. Jul 2007 12:09

Re: FormClose aufrufen und ausführen !!!
 
@DeddyH:

Du solltest die Zeile
Delphi-Quellcode:
  Action := caHide;
noch rauslassen, sonst meckert der Compiler ;)

Muetze1 12. Jul 2007 12:11

Re: FormClose aufrufen und ausführen !!!
 
Zitat:

Zitat von DeddyH
Versuch es mal so:
Delphi-Quellcode:
procedure TFormPasswort.BitBtnOKClick(Sender: TObject);
begin
  FormPasswort.Close;
end;

Wenn es sich um die Form selbst geht, dann lasse das "FormPasswort." weg!

DeddyH 12. Jul 2007 12:11

Re: FormClose aufrufen und ausführen !!!
 
Zitat:

Zitat von fLaSh11
@DeddyH:

Du solltest die Zeile

Delphi-Quellcode:
Action := caHide;
noch rauslassen, sonst meckert der Compiler :wink:

Meiner nicht.

DeddyH 12. Jul 2007 12:14

Re: FormClose aufrufen und ausführen !!!
 
Zitat:

Zitat von Muetze1
Wenn es sich um die Form selbst geht, dann lasse das "FormPasswort." weg!

Du meinst, man kann das "FormPasswort." weglassen.

P.S.: Ich habe keine Ahnung, was Deine Signatur bedeuten soll ;)

Muetze1 12. Jul 2007 12:18

Re: FormClose aufrufen und ausführen !!!
 
Zitat:

Zitat von DeddyH
Du meinst, man kann das "FormPasswort." weglassen.

Man sollte. Schliesslich würde sich bei 2 Instanzen oder einer selbst erstellten Instanz (welche z.B. in einer lokalen Variable gehalten wird und nicht in die globale Variable FormPasswort geschrieben wurde) die Form nicht mehr schliessen. Es ist gefährlich und viel zu unsicher diese globalen Variablen zu nutzen. Wenn es modale Dialoge sind oder sonstige Forms, dann legt man diese meist selbst lokale an und gibt sie dort auch wieder frei. Dazu ist eine lokale Variable viel übersichtlicher als besser lesbar als diese globale Variable. Auch wenn es eine nicht modale Form ist, kann man ihre Instanz in einem member der erzeugenden Form halten, schliesslich sollte man sie dort auch wieder freigeben!

Man kann vieles, aber ob es les-, wart- und pflegbar ist, ist eine andere Sache. Ich lösche grundsätzlich diese globalen Deklaration raus (Ausnahme: meine MainForm).

HolgerCW 12. Jul 2007 12:47

Re: FormClose aufrufen und ausführen !!!
 
Danke für die vielen Tips.

Ich habe einfach zu kompliziert gedacht.

Einfach FormPasswort.Close aufrufen ... das wars

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 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