Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form über eigenen Button schließen ... (https://www.delphipraxis.net/150640-form-ueber-eigenen-button-schliessen.html)

LingNeu 22. Apr 2010 16:10


Form über eigenen Button schließen ...
 
Hallo Delphifans,
habe eine App mit mehreren Programmteilen, welchem ich den herkömmlichen Schliessen-Button abgeschaltet habe.
Dazu verwende ich die OnCloseQuery in der ich CanClose := false gesetzt habe.
Wenn nun der Anwender den Schließbutton drückt, kommt die Abfrage, ob er diesen Programmteil verlassen will.
Wenn ja, dann kommt der auf die s.g. Startseite zurück.
Dort kann er jetzt ein anderes Programm aufrufen oder das gesamte Programm verlassen
Und hier ist mein Problem
Ich habe bisher keine Möglichkeit gefunden, dort an dieser Stelle das Programm zu schließen oder zu verlassen.
Da ist ja auch noch CanClose aktiv.
Was kann ich tun?
Danke für jede Hilfe
ciao
LingNeu

Delphi-Quellcode:
//der normale Schliessen-Button wird umfunktioniert ...
procedure Tfrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False; // damit wird die Form offen gehalten
  // restliche Abfrage Ja/Nein
end;
//ein anderer Button soll tatsächlich die Form schliessen ...
procedure Tfrm.Button1Click(Sender: TObject);
begin
frm.Close; //geht nicht
end;

himitsu 22. Apr 2010 16:25

Re: Form über eigenen Button schließen ...
 
Delphi-Quellcode:
CanClose := False;
nicht fest auf False legen.

Speichere in einer Variable, ob dein Button gedrückt wurde und wenn ja, dann CanClose auf True.

dominikkv 22. Apr 2010 16:28

Re: Form über eigenen Button schließen ...
 
Du darfst halt CanClose nicht IMMER auf false setzen, sondern nur dann, wenn die Form sich nicht schließen lassen darf. Du kannst zum Beispiel ein Boolean-Feld in deiner Form deklarieren, welches immer auf False steht, und wenn du das Programm beenden willst setzt du dieses auf True. Ansonsten über die "harten" Methoden á la Halt();

kamel08 22. Apr 2010 16:29

Re: Form über eigenen Button schließen ...
 
ich hätte das so gemacht:

//ein anderer Button soll tatsächlich die Form schliessen ...
procedure Tfrm.SpecialExitButtonClick(Sender: TObject);
begin
Form1.OnCloseQuery := nil;
close;
end;

Muellermilchtrinker 22. Apr 2010 16:29

Re: Form über eigenen Button schließen ...
 
Schieß es doch mit Application.Terminate ab.
Hab ich auch bei nem Prgramm gemacht

LingNeu 22. Apr 2010 16:44

Re: Form über eigenen Button schließen ...
 
Mensch Leute !
Ihr seid Spitze !! :bounce1: :bounce1: :bounce1:
soviele Antworten hätte ich nicht erwartet - und das noch dazu in dieser kurzen Zeit.
Danke!
Ich probier das Eine oder Andere aus und schau mal, welches für mich passt.
ciao
LingNeu

DeddyH 22. Apr 2010 16:50

Re: Form über eigenen Button schließen ...
 
Müsste nicht ein
Delphi-Quellcode:
procedure Tfrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := Sender = Button1;
end;
genügen?

blauweiss 22. Apr 2010 16:58

Re: Form über eigenen Button schließen ...
 
Zitat:

Zitat von DeddyH
Müsste nicht ein
Delphi-Quellcode:
procedure Tfrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := Sender = Button1;
end;
genügen?

Nein, weil Sender ziemlich sicher das Form ist und nicht der Button....

blauweiss


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