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,ShowExportDialogundShowContextMenuführen aus, was Kontextmenü und Tasten ausführen: am Datensatz mit dem Fokus und mit denselben Ereignissen und Rückfragen (BeforeDeletefragt vor dem Löschen nach,BeforeCellEditkann abbrechen). - Zustände.
CanAdd,CanDelete,CanEditundCanExportfolgen denselben Regeln wie die Menüeinträge. Ein Befehl, dessen Zustand False ist, löstwkeNotAvailableaus, so wie Access bei seinen eigenen Befehlen Fehler 2046 auslöst. - Benachrichtigung.
CommandStateChangetritt 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.
NewRecordundEditSelectedöffnen einen Zelleditor. Der Benutzer kann nur darin tippen, solange das Raster den Fokus hat; rufen Sie daher vorherSetFocusfür das Steuerelement auf. - Der Zustand einer Schaltfläche kann kurz veraltet sein.
CommandStateChangetritt ein, sobald eine Änderung abgeschlossen ist und das Raster sie angezeigt hat. Ein Klick dazwischen läuft aufwkeNotAvailable. Fangen Sie das mitOn Errorab, 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
wkeNotAvailableaus, 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
WklGridmit Detailansichten öffnen und schließen Strg++ und Strg+- stattdessen die Detailansichten. - Detailansichten.
DetailGridgibt 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
- API-Referenz (Englisch): WklGrid (Kontextmenü und Tasten), WklTreeList (
NewRecord,DeleteSelected,EditSelected,CopySelected,ShowExportDialog,ShowContextMenu,CanAdd,CanDelete,CanEdit,CanExport,CommandStateChange)
de/wiki/msaccess/comctl/how-to/run-grid-commands-from-buttons.txt · Last modified: by Wolfgang van der Stille