Artikel-ID: 245746 - Geändert am: Dienstag, 27. August 2002 - Version: 1.0

ACC2000:Deaktivieren der Schaltfläche SCHLIESSEN im Access-Anwendungsfenster

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D44866
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
245746  (http://support.microsoft.com/kb/245746/EN-US/ ) ACC2000:How to Disable Close Button on Access Application Window
Alles erweitern | Alles schließen

Zusammenfassung

Fortgeschritten: Erfordert Fachkenntnisse in den Bereichen Kodierung und Interoperabilität sowie Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich auf Microsoft Access-Datenbanken (.mdb) und Microsoft Access-Projekte (.adp).

Zusammenfassung

Microsoft Access besitzt keine integrierte Methode zum Deaktivieren der Schaltfläche SCHLIESSEN (X) im Anwendungsfenster oder des Befehls SCHLIESSEN im Menü SYSTEM des Anwendungsfensters. Dieser Artikel beschreibt, wie sie beide per Programm deaktivieren können.

Weitere Informationen

Um die Schaltfläche SCHLIESSEN im Anwendungsfenster und den Befehl SCHLIESSEN im Menü SYSTEM zu deaktivieren, müssen Sie die Funktionen GetSystemMenu und ModifyMenu aus der Win32-API aufrufen.

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Bei Makro- und Programmlistings soll lediglich exemplarisch die Funktionsweise des Beispiels aufgezeigt werden.

Vorgehensweise (Beispiel)
  1. Starten Sie Microsoft Access.
  2. Öffnen Sie die Beispieldatenbank Nordwind.mdb.
  3. Klicken Sie im Menü EINFÜGEN auf KLASSENMODUL.
  4. Geben Sie im Deklarationsbereich den folgenden Code ein:
       Option Compare Database
       Option Explicit
       Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
          ByVal bRevert As Long) As Long
       Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
          Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
       Private Declare Function GetMenuItemInfo Lib "user32" Alias _
          "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As _
          Long, lpMenuItemInfo As MENUITEMINFO) As Long
       Private Type MENUITEMINFO
           cbSize As Long
           fMask As Long
           fType As Long
           fState As Long
           wID As Long
           hSubMenu As Long
           hbmpChecked As Long
           hbmpUnchecked As Long
           dwItemData As Long
           dwTypeData As String
           cch As Long
       End Type
       Const MF_GRAYED = &H1&
       Const MF_BYCOMMAND = &H0&
       Const SC_CLOSE = &HF060&
  5. Fügen Sie im Klassenmodul die folgenden Prozeduren hinzu:
       Public Property Get Enabled() As Boolean
           Dim hWnd As Long
           Dim hMenu As Long
           Dim result As Long
           Dim MI As MENUITEMINFO
           
           MI.cbSize = Len(MI)
           MI.dwTypeData = String(80, 0)
           MI.cch = Len(MI.dwTypeData)
           MI.fMask = MF_GRAYED
           MI.wID = SC_CLOSE
           hWnd = Application.hWndAccessApp
           hMenu = GetSystemMenu(hWnd, 0)
           result = GetMenuItemInfo(hMenu, MI.wID, 0, MI)
           Enabled = (MI.fState And MF_GRAYED) = 0
       End Property
       Public Property Let Enabled(boolClose As Boolean)
           Dim hWnd As Long
           Dim wFlags As Long
           Dim hMenu As Long
           Dim result As Long
           
           hWnd = Application.hWndAccessApp
           hMenu = GetSystemMenu(hWnd, 0)
           If Not boolClose Then
               wFlags = MF_BYCOMMAND Or MF_GRAYED
           Else
               wFlags = MF_BYCOMMAND And Not MF_GRAYED
           End If
           result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
       End Property
  6. Klicken Sie im Menü DATEI auf SAVE NORTHWIND (TO SAVE THE PROJECT) und speichern Sie das Klassenmodul als CloseCommand, wenn Sie dazu aufgefordert werden.
  7. Klicken Sie im Menü EINFÜGEN auf MODUL, um ein neues Standardmodul anzulegen.
  8. Fügen Sie die folgende Prozedur im Modul hinzu:
       Function InitApplication()
          Dim c As CloseCommand
          Set c = New CloseCommand
          
          'Disable Close menu.
          c.Enabled = False
       End Function
  9. Klicken Sie im Menü TESTEN auf KOMPILIEREN VON NORDWIND. Wenn das Projekt nicht erfolgreich kompiliert wird, korrigieren Sie die Kompilierfehler und kompilieren Sie das Projekt dann erneut.
  10. Klicken Sie im Menü DATEI auf NORDWIND SPEICHERN und verwenden Sie den Standardnamen, der im Feld "Modulname" erscheint, indem Sie auf OK klicken.
  11. Erstellen Sie ein neues Makro mit folgenden Aktionen und Aktionsargumenten:
       Aktion
       
       RunCode
       Aktionsargumente
       
       Funktionsname: InitApplication()
  12. Speichern Sie das Makro unter dem Namen Autoexec.
  13. Schließen Sie die Datenbank.
  14. Öffnen Sie die Datenbank erneut.
Beachten Sie, dass die Schaltfläche SCHLIESSEN und der Befehl SCHLIESSEN im Menü SYSTEM des Anwendungsfensters deaktiviert sind.

Verwendung
Das in diesem Artikel beschriebene Klassenmodul "CloseCommand" ermöglicht es Ihnen, die Schaltfläche SCHLIESSEN und den Befehl SCHLIESSEN im Anwendungsfenster auf einfache Weise zu aktivieren oder zu deaktivieren. Mit dem Klassenmodul können Sie auch den Status dieser Befehle prüfen, um festzustellen, ob sie gerade aktiviert oder deaktiviert sind. Bevor Sie das tun können, muss Ihr Code zunächst eine Instanz der CloseCommand-Klasse erzeugen wie zuvor in diesem Artikel dargestellt (Funktion InitApplication).

Um den Status der Schaltfläche SCHLIESSEN zu prüfen, verwenden Sie die Eigenschaft "Aktiviert" der Instanz "CloseCommand", die Ihr Code erzeugt hat. Um den Status der Schaltfläche SCHLIESSEN zu setzen, weisen Sie der Eigenschaft "Aktiviert" der von Ihrem Code erzeugten Instanz "CloseCommand" "Wahr" oder "Falsch" zu.

Bitte beachten Sie, dass diese Technik sich auf die Schaltfläche SCHLIESSEN im Anwendungsfenster von Microsoft Access auswirkt, nicht auf die Schaltfläche SCHLIESSEN im Datenbankfenster. Nach Deaktivierung der Schaltfläche wird sie nicht automatisch wieder aktiviert, wenn Ihre Datenbank geschlossen wird. Wenn der Benutzer die Datenbank schließt und Microsoft Access geöffnet lässt, wird er Microsoft Access nicht mit der Schaltfläche SCHLIESSEN beenden können. In diesem Fall sollte Ihre Anwendung die Schaltfläche SCHLIESSEN wieder aktivieren, bevor sie beendet wird. Anderenfalls muss der Benutzer Microsoft Access beenden und neu starten, damit die Schaltfläche wieder aktiviert wird.

Diese Technik deaktiviert den Befehl BEENDEN im Menü DATEI nicht. Wenn dieser Befehl deaktiviert werden soll, müssen Sie das Menü DATEI entsprechend anpassen, d.h., den Befehl BEENDEN entfernen.

Weitere Suchbegriffe: access2000 acc2000 schaltfläche schliessen deaktivieren anwendungsfenster

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.


Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 2000 Standard Edition
Keywords: 
kbdta KB245746
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.