Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ALT + F4 verhindern? (https://www.delphipraxis.net/4524-alt-f4-verhindern.html)

Pseudemys Nelsoni 3. Mai 2003 06:19


ALT + F4 verhindern?
 
hi,

wie kann ich das verhinden das sich mein prog per alt+f4 schliesst?

Auch in der Taskleiste das schliessen per rechtsklick sollte weg, danke

gruss silent^^

Luckie 3. Mai 2003 12:31

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;

Pseudemys Nelsoni 3. Mai 2003 19:19

hi luckie, danke für deine antwort. :)
Ich meinte aber eigentlich das es sich noch per button click (close) schliessen lassen können muss, nur per alt f4 und in der taskleiste nicht

geht das?

gruss silent

mirage228 3. Mai 2003 19:35

du musst das ganze im OnCloseQuery behandeln

einfach CanClose := False;

und das Programm mit
Application.Terminate;

beenden

mfG
mirage228

Pseudemys Nelsoni 3. Mai 2003 20:17

danke ;)

Luckie 3. Mai 2003 22:14

Zitat:

Zitat von mirage228
einfach CanClose := False;
und das Programm mit
Application.Terminate;beenden

Aua. Hast du auch jedes mal von deinem Vater eins mit dem Holzhammer auf den Kopf bekommen, wenn du nicht schlafen konntest?.

Delphi-Quellcode:
var
  bAllowClose : Boolean = FALSE;  // global

{...}

procedure Form1.OnCloseQuery(....);
begin
  CanClose := bAllowClose;
end;

procedure Form1.ButtonClick(...);
begin
  bAllowClose := TRUE;
  Close;
end;

Christian Seehase 4. Mai 2003 01:11

Moin Luckie,

was ist los?
Mirages Variante funktioniert doch...

Bei Application.Terminate werden doch OnCloseQuery und OnClose des Hauptformulares nicht ausgeführt. ;-)

Luckie 4. Mai 2003 04:03

Eben, und das ist das gefährliche denke ich mir.

Christian Seehase 4. Mai 2003 12:44

Moin Luckie,

Zitat:

Zitat von Luckie
Eben, und das ist das gefährliche denke ich mir.

stimmt, falls man die Eigenarten von Application.Terminate nicht kennt und somit nicht berücksichtigt.

BTW: Ich würd' dafür keine globale Variable, sondern ein private Feld im Formular verwenden (ggf. als Property veröffentlicht).

Christian Seehase 4. Mai 2003 13:15

Moin Zusammen,

es gibt auch noch einen ganz sauberen Weg:
Man schaltet einfach den Menüpunkt ab:

Delphi-Quellcode:
// im OnFormCreate

// Schliessen im Systemmenü des Hauptformulares
  EnableMenuItem(GetSystemMenu(self.Handle,false),SC_CLOSE,MF_BYCOMMAND or MF_GRAYED);
// und auch für die Taskleiste
  EnableMenuItem(GetSystemMenu(Application.Handle,false),SC_CLOSE,MF_BYCOMMAND or MF_GRAYED);


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz