Color scheme: Riviera
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Befehle des Rasters über eigene Schaltflächen ausführen

Befehle des Rasters über eigene Schaltflächen ausführen

Bieten Sie Neu, Löschen, Bearbeiten und Exportieren als Befehlsschaltflächen des Formulars (oder als Einträge im Menüband) neben einem WklGrid oder einer WklTreeList an – aktiviert genau dann, wenn das eigene Kontextmenü des Rasters sie anbieten würde.

Voraussetzungen: WKL Forms Object Library 1.28 oder höher.

Lösungsüberblick

  • Befehle. NewRecord, DeleteSelected, EditSelected, CopySelected, ShowExportDialog und ShowContextMenu führen aus, was Kontextmenü und Tasten ausführen: am Datensatz mit dem Fokus und mit denselben Ereignissen und Rückfragen (BeforeDelete fragt vor dem Löschen nach, BeforeCellEdit kann abbrechen).
  • Zustände. CanAdd, CanDelete, CanEdit und CanExport folgen denselben Regeln wie die Menüeinträge. Ein Befehl, dessen Zustand False ist, löst wkeNotAvailable aus, so wie Access bei seinen eigenen Befehlen Fehler 2046 auslöst.
  • Benachrichtigung. CommandStateChange tritt ein, wenn sich einer der vier Zustände ändert – nachdem der Benutzer einen anderen Datensatz ausgewählt hat, aber auch nachdem Code eine Einstellung geändert oder die Datensätze neu gelesen hat.

Umsetzung

Ein Formular mit dem Raster Grid1 und den Schaltflächen cmdNew, cmdDelete, cmdEdit und cmdExport:

Private Sub Form_Load()
    ShowCommandStates
End Sub
 
Private Sub Grid1_CommandStateChange()
    ShowCommandStates
End Sub
 
Private Sub ShowCommandStates()
    With Me!Grid1.Object
        Me!cmdNew.Enabled = .CanAdd
        Me!cmdDelete.Enabled = .CanDelete
        Me!cmdEdit.Enabled = .CanEdit
        Me!cmdExport.Enabled = .CanExport
    End With
End Sub
 
Private Sub cmdNew_Click()
    Me!Grid1.SetFocus
    Me!Grid1.Object.NewRecord
End Sub
 
Private Sub cmdDelete_Click()
    Me!Grid1.Object.DeleteSelected
End Sub
 
Private Sub cmdEdit_Click()
    Me!Grid1.SetFocus
    Me!Grid1.Object.EditSelected
End Sub
 
Private Sub cmdExport_Click()
    Me!Grid1.Object.ShowExportDialog
End Sub

Hinweise

  • Zum Bearbeiten zuerst den Fokus setzen. NewRecord und EditSelected öffnen einen Zelleditor. Der Benutzer kann nur darin tippen, solange das Raster den Fokus hat; rufen Sie daher vorher SetFocus für das Steuerelement auf.
  • Der Zustand einer Schaltfläche kann kurz veraltet sein. CommandStateChange tritt ein, sobald eine Änderung abgeschlossen ist und das Raster sie angezeigt hat. Ein Klick dazwischen läuft auf wkeNotAvailable. Fangen Sie das mit On Error ab, wenn die Schaltfläche sehr kurz nach einer Änderung angeklickt werden kann.
  • Nicht beim Öffnen des Formulars. Das Ereignis meldet Änderungen, nicht den ersten Zustand; lesen Sie die Zustände wie oben in Form_Load.
  • Nur in der Formularansicht. In der Entwurfsansicht lösen die Befehle wkeNotAvailable aus, und die Zustände sind False.
  • Tasten. Dieselben Befehle liegen auf den Tasten eines Access-Datenblatts: Strg++ neuer Datensatz, Strg+- löschen, Umschalt+F9 neu lesen (ebenso F5), Strg+C kopieren, Menütaste oder Umschalt+F10 Kontextmenü. Bei einem Datensatz eines WklGrid mit Detailansichten öffnen und schließen Strg++ und Strg+- stattdessen die Detailansichten.
  • Detailansichten. DetailGrid gibt das Raster einer Detailansicht zurück. Dessen Befehle und Zustände wirken auf die gleiche Weise auf die Datensätze dieser Registerkarte. Seine Ereignisse erreichen das Formularmodul nicht.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/run-grid-commands-from-buttons.txt · Last modified: by Wolfgang van der Stille