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/)
-   -   Den "X"-Button in der Form deaktivieren (https://www.delphipraxis.net/121939-den-x-button-der-form-deaktivieren.html)

BAMatze 7. Okt 2008 10:10


Den "X"-Button in der Form deaktivieren
 
Hallo,

hab mal wieder eine Frage. Ich möchte bei einer Form in meinem Programm dem Benutzer die Möglichkeit nehmen, ein selbst programmiertes Hilfe-Fenster mit dem "X"-Button oben rechts zu schließen. Er soll in diesem Fenster dazu gezwungen werden über 3 Buttons eine Entscheidung zu fällen. Da ist es schlecht, wenn man diese mit dem "X"-Button umgehen kann.

Danke für eure Hilfe im Voraus

BAMatze

Codewalker 7. Okt 2008 10:17

Re: Den "X"-Button in der Form deaktivieren
 
Schau Dir mal das Ereignis OnCanClose von deinem Form an - das sollte dir weiterhelfen. Der var-Parameter "CanClose" gibt an, ob das Form geschlossen wird oder nicht.

DeddyH 7. Okt 2008 10:25

Re: Den "X"-Button in der Form deaktivieren
 
Oder so versuchen:
Delphi-Quellcode:
EnableMenuItem(GetSystemMenu(Handle,false),SC_CLOSE,MF_BYCOMMAND or MF_GRAYED or MF_DISABLED);

Larsi 7. Okt 2008 10:25

Re: Den "X"-Button in der Form deaktivieren
 
Oder deaktiviere einfach alle BorderIcons im OI.

turboPASCAL 7. Okt 2008 10:27

Re: Den "X"-Button in der Form deaktivieren
 
OT
und ich mache dann das fenster mit alt+f4 zu :mrgreen:

Luckie 7. Okt 2008 10:28

Re: Den "X"-Button in der Form deaktivieren
 
Weg bekommt man ih nicht, wenn man die anderen beiden Schaltflächen behalten möchte. Aber man kan nihn deaktivieren, in dem man den entsprechenden Menüpunkt aus dem Systemmenü entfernt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hMenu: THandle;
begin
  hMenu := GetSystemMenu(Handle, false);
  if hMenu <> 0  then
  begin
    if DeleteMenu(hMenu, 6, MF_BYPOSITION) then
      DrawMenuBar(Handle)
    else
      ShowMessage(SysErrorMessage(GetLastError));
  end
  else
    ShowMessage(SysErrorMessage(GetLastError));
end;
Aber sinnvoller wäre es wahrscheinlich wirklich mit dem Ereignis der Form OnCloseQuery zu arbeiten.

turboPASCAL 7. Okt 2008 11:00

Re: Den "X"-Button in der Form deaktivieren
 
Zitat:

Zitat von Larsi
Wer will denn die anderen beiden Schaltflächen behalten? Will er doch gar nicht.

Ein Versteckter beitrag ? :mrgreen:
Bei mir ist der obere von Larsi SW_HIDE.

// Edit: war bis zur Löschung. :stupid:

Luckie 7. Okt 2008 11:02

Re: Den "X"-Button in der Form deaktivieren
 
Hm, ich habe da eben einen leeren Beitrag von Larsi gelöscht. Was war das jetzt?

aber zum Thema, wo steht, dass er die anderen beiden Schaltflächen zum Maximieren und Minimieren auch nicht haben will?

andyvdeu 7. Okt 2008 11:18

Re: Den "X"-Button in der Form deaktivieren
 
Vielliecht hilft das ?
Delphi-Quellcode:
procedure DisableCaptionCloseButton(const FormHandle: THandle);
var
  hMnu: THandle;
begin
  hMnu := GetSystemMenu(FormHandle, FALSE);
  EnableMenuItem(hMnu, SC_CLOSE, SC_CLOSE or MF_GRAYED);
end;

procedure EnableCaptionCloseButton(const FormHandle: THandle);
var
  hMnu: THandle;
begin
  hMnu := GetSystemMenu(FormHandle, FALSE);
  EnableMenuItem(hMnu, SC_CLOSE, SC_CLOSE or MF_ENABLED);
end;
[edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit]

Tyrael Y. 7. Okt 2008 11:27

Re: Den "X"-Button in der Form deaktivieren
 
Mal ne ganz andere Heransgehensweise...

Lass das X stehen und definiere dafür einen Standardwert.

zb. Formular hat drei Buttons

MacheAktion1 MacheAktion2 Abbrechen

...in diesem Fall wäre X = Abbrechen


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