Forms - "Schließen-Kreuz" deaktivieren



  • Hi!

    Gibt es eine Möglichkeit das "Schließen-Kreuz" in der oberen rechten Ecke eines Programms zu deaktivieren oder ganz aus der Oberfläche zu entfernen?

    MfG

    Rookie images/smiles/icon_smile.gif

    [ Dieser Beitrag wurde am 26.03.2002 um 17:14 Uhr von Jansen editiert. ]



  • Hi,

    du kannst einfach die Methode CreateParams überschreiben. In dieser werden die Eigenschaften vom Fenster gesetzt.

    Beispiel:

    //----------------------------------------------------------------------
    class TMainForm : public TForm
    {
    __published:
    protected:
    void __fastcall CreateParams(TCreateParams &Params)
        {        
         TForm::CreateParams(Params);
         Params.WindowClass.style |=CS_NOCLOSE;
        }
    public:
    __fastcall TMainForm(TComponent* Owner):TForm(Owner){};
    
    };
    
    //----------------------------------------------------------------------
    

    um dieses zur Laufzeit wieder rückgangig zu machen, kann man sowas schreiben:

    LONG temp=GetWindowLong(Handle,GWL_STYLE); 
    temp&=~CS_NOCLOSE; 
    SetWindowLong(Handle,GWL_STYLE,temp);
    


  • Hi!

    Super!! Vielen Dank!!
    Klappt super!

    MfG

    Rookie
    images/smiles/icon_biggrin.gif



  • Um den Thread für die FAQ vorzubereiten, hier noch eine Alternative von skillloseR[ aus einem anderen Thread:

    Moin,
    ich hab die Lösung für dein Problem:
    Du musst einfach den folgenden Code ins FormCreate-Ereignis deines Programms eintragen und schon ist das x- deaktiviert!

    DeleteMenu(GetSystemMenu(Handle, false), SC_CLOSE, MF_BYCOMMAND);
    

    MfG

    skillloseR



  • Und noch ein Zitat von yanni:

    Hallo!

    Um auch noch das Beenden durch Alt+F4 zu verhindern, kann man im OnCloseQuery-Event "CanClose = false;" schreiben.

    yanni


Anmelden zum Antworten