Datensätze neben der Liste bearbeiten
Öffnen Sie ein Bearbeitungsformular in einem Bereich rechts neben einer Liste, sobald der Benutzer einen Datensatz wählt – ohne Dialogfeld und ohne die Liste zu verlassen.
Voraussetzungen: WKL Forms Object Library 1.48 oder höher.
Lösungsüberblick
Ein WklDrawer liegt zwischen der Liste und einem Unterformular-Steuerelement. Content nennt das
Unterformular-Steuerelement, Open zeigt darin ein Formular an, Close blendet es wieder aus. Das
Bearbeitungsformular ist ein gewöhnliches Access-Formular; der Drawer platziert es nur. Filtern Sie es in AfterOpen
oder über die Verknüpfungsfelder des Unterformular-Steuerelements auf den Datensatz.
Umsetzung
In der Entwurfsansicht: Legen Sie die Liste links ab, ein Unterformular-Steuerelement sfBearbeiten rechts, und zeichnen Sie
WKL Drawer (Formularentwurf › Steuerelemente › ActiveX-Steuerelemente) als schmale Leiste in die Lücke; nennen
Sie es drw1. Wählen Sie im Designer ([...] in der Zeile Benutzerdefiniert, Seite Bereich) sfBearbeiten als
Inhalt; die Vorschau nennt die Steuerelemente, die schmaler werden.
Private Sub lstKunden_DblClick(Cancel As Integer)
Me!drw1.Object.Open "frmKundeBearbeiten"
End Sub
Private Sub drw1_AfterOpen(ByVal SourceObject As String)
' The content is loaded now: show the chosen record.
Me!sfBearbeiten.Form.Filter = "KundeID = " & Me!lstKunden
Me!sfBearbeiten.Form.FilterOn = True
End Sub
Private Sub drw1_BeforeClose(ByVal Reason As Long, Cancel As Integer)
' Keep the panel open while the record there has unsaved changes.
If Me!sfBearbeiten.Form.Dirty Then Cancel = True
End Sub
Verschiedene Inhalte können eine eigene Breite haben:
With Me!drw1.Object
.Widths = "{""frmKundeBearbeiten"": 4500, ""frmBestellmatrix"": 9000}"
.MinBeside = 3402 ' 6 cm of the list stay visible
.CloseOnEscape = True ' Esc in an unchanged record closes the panel
End With
Hinweise
ReasonvonBeforeCloseundClosedist einWklDrawerCloseReason:wdcCode(Close,Toggle, ein neuesOpen),wdcUser(die Schaltfläche zum Schließen, Eingabetaste oder Leertaste auf der Leiste),wdcEscape.- Das Setzen von
Widthper Code löst keinAfterResizeaus; das tun nur Ziehen, eine Pfeiltaste oder UI Automation, und nur diese Breiten werden für den Benutzer gespeichert (AutoSaveLayout). - Lassen Sie die Verankerung der Liste und des Unterformular-Steuerelements auf Oben links: Der Drawer berechnet jede Anordnung aus den entworfenen Positionen. Verankerungen im Inhaltsformular sind erwünscht; mit
AnchorContentwendet der Drawer sie an. - Entwerfen Sie das Inhaltsformular ohne horizontale Bildlaufleiste und nicht breiter als bei seiner schmalsten Verwendung: Access lässt ein Formular zur Laufzeit wachsen, aber nicht schrumpfen.
- Solange der Datensatz im Inhalt geändert ist, tut Esc, was es in Access tut (es macht die Änderung rückgängig); nur Esc in einem unveränderten Datensatz schließt den Bereich.