Tausendsassa Datenblatt - Teil 1

Und der Codieraufwand


Sie werden zu Recht sagen: Wenn ich für jedes Steuerelement in jedem Formular, das ich in der Datenblattansicht anzeigen möchte, eine neue Prozedur anlegen muss, wird das ziemlich zeitaufwendig. Es gibt allerdings ein Gegenmittel, mit dem Sie einmal Codieraufwand haben und anschließend nur noch wenige Zeilen je Formular hinzufügen müssen.

Stellen Sie sich einmal vor, Sie müssen dem Formular, das in der Datenblattansicht angezeigt werden und das per Mausklick auf ein beliebiges Steuerelement die komplette Zeile markieren soll, nur noch die folgenden Zeilen Code einfügen:

Dim objForm As clsForm
Private Sub Form_Open(Cancel As Integer)
Set objForm = New clsForm
Set objForm.Formular = Me
End Sub


Das wäre wohl ein vertretbarer Aufwand. Vor allem, wenn man damit noch viel mehr bewirken kann, als nur
einen kompletten Datensatz beimKlick auf ein einziges Feld zu markieren – dazu jedoch später mehr.

Und wie funktioniert das? Immerhin muss sich ja irgendwo die Funktionalität verbergen, die sonst in den Ereignissen Bei Maus Ab der Steuerelemente verborgen hat. Und auch die entsprechenden Ereignisse müssen irgendwie berücksichtigt werden.

Option Compare Database
Option Explicit
Dim WithEvents mForm As Form
Dim mColControls As Collection
Dim mControl As clsControl
Public Property Set Formular(frmFormular As Form)
Dim ctl As Control
Set mForm = frmFormular
Set mColControls = New Collection
For Each ctl In mForm.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = _
acComboBox Or ctl.ControlType = acCheckBox Then
Set mControl = New clsControl
Set mControl.FormControl = ctl
mColControls.Add mControl
End If
Next ctl
End Property