Delphi-PRAXiS

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

Larsi 7. Okt 2008 11:43

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

Zitat von Luckie
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?

Warum war in meinem Beitrag denn nichts drinnen? :gruebel: Bei mir stand da was drinnen.

turboPASCAL 7. Okt 2008 13:51

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

Zitat von Larsi
Warum war in meinem Beitrag denn nichts drinnen? :gruebel: Bei mir stand da was drinnen.

War in der DP nur ein leeres Feld zu sehen. Mit dem Zitat-Butten sah ich dann den Text.

Warscheinlich hatte gerade [user]Gérome[/user] Staub gewischt und ist dabei unsanft gegen die Festplatte gestossen. :gruebel:
Das ist aber ein anderes Thema unn gehört nicht hier hinein.

jokerfacehro 7. Okt 2008 15:01

Re: Den "X"-Button in der Form deaktivieren
 
man kann das Form auch ausschneiden, und ne eigene leiste programmieren auf der nur minimze und maximize zu sehen sind


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr.

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