Farbschema: Riviera
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Struktur durch Benutzer bearbeiten lassen

Struktur durch Benutzer bearbeiten lassen

Erlauben Sie Benutzern, Knoten umzubenennen, hinzuzufügen, zu löschen, zu verschieben und zu kopieren, und prüfen Sie jede Änderung, bevor sie in die Datenquelle geschrieben wird.

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

Lösungsüberblick

Vier Eigenschaften schalten die Vorgänge ein: LabelEdit (Umbenennen), AllowAdditions (Hinzufügen), AllowDeletions (Löschen) und AllowDragDrop (Verschieben und Kopieren). Alle sind standardmäßig ausgeschaltet, weil sie Daten ändern. Mit AutoSave = True (Standard) wird jeder Vorgang in einer einzigen Transaktion geschrieben; BeforeUpdate tritt vor jedem Schreiben ein und kann den gesamten Vorgang abbrechen.

Umsetzung

Im Eigenschaftenblatt (Registerkarte Andere) oder in Form_Load:

With Me!Tree1.Object
    .LabelEdit = True          ' F2 or click on the selected node
    .AllowAdditions = True     ' Insert: same level; Ctrl+Insert: below
    .AllowDeletions = True     ' Delete, with confirmation
    .AllowDragDrop = True      ' drag to move, Ctrl+drag to copy; Ctrl+X/C/V, Alt+Arrow keys
End With

Änderungen im Formularmodul prüfen:

Private Sub Tree1_BeforeUpdate(ByVal Key As Variant, ByVal Action As WklUpdateAction, Cancel As Integer)
    If Action = wuaDelete And Not CurrentUserMayDelete() Then Cancel = True   ' rolls back the whole operation
End Sub
 
Private Sub Tree1_AfterLabelEdit(ByVal Key As Variant, NewText As String, Cancel As Integer)
    NewText = Trim$(NewText)
    If Len(NewText) = 0 Then Cancel = True
End Sub
 
Private Sub Tree1_BeforeNodeAdd(ByVal ParentKey As Variant, NewKey As Variant, Text As String, Cancel As Integer)
    Text = "Neue Region"
End Sub

CurrentUserMayDelete steht für Ihre eigene Berechtigungsprüfung.

Hinweise

  • Das Kontextmenü bietet jeden Vorgang nur an, wenn seine Eigenschaft ihn zulässt.
  • Löschen entfernt den gesamten Teilbaum; BeforeDelete kann die Rückfrage unterdrücken (Confirm = False) oder das Löschen abbrechen.
  • Neue Schlüssel: Einen AutoWert vergibt Access. Für andere Schlüsselfelder schlägt das Steuerelement einen Schlüssel vor, den BeforeNodeAdd und BeforeNodeCopy ändern können: Zahlen werden ab dem höchsten Schlüssel fortgezählt, Textschlüssel erhalten ein Suffix in der Sprache der Oberfläche (A1-Kopie, A1-Kopie2 …), GUID-Schlüssel eine neue GUID.
  • Beim Kopieren werden Anlage- und mehrwertige Felder nicht kopiert.
  • Ziehen funktioniert nur innerhalb desselben Steuerelements.
  • In einer aus einem Recordset oder einer Datei geladenen Struktur wirken Änderungen nur auf die Anzeige.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/let-users-edit-the-tree.txt · Zuletzt geändert: von Wolfgang van der Stille