Das Formular wird nach der Behandlung von NodeFormat oder CellFormat langsam
Aufklappen, Blättern, Sortieren oder Filtern dauert bis zu einer Sekunde je Schritt, nachdem FormatEvents
eingeschaltet wurde, um NodeFormat oder CellFormat zu behandeln.
Umgebung
Alle Versionen von WklTreeView und WklTreeList, Microsoft 365 Access.
Ursache
NodeFormat tritt bei jedem Neuzeichnen für jeden sichtbaren Knoten auf, CellFormat für jede sichtbare Zelle.
Access gibt jeden Aufruf eines ActiveX-Ereignisses an das Formular weiter, und jeder Aufruf kostet einige
Millisekunden, auch wenn die Prozedur leer ist; einige Hundert sichtbare Zellen kosten je Neuzeichnen den größten Teil
einer Sekunde. Ein DLookup oder eine Abfrage in der Prozedur vervielfacht die Kosten.
Lösung
- Verlagern Sie feste Formatierungen in die Daten:
ForeColorFieldundBoldField(Struktur), Formatregeln (FormatRules, Strukturliste) – sie brauchen kein Ereignis. - Belassen Sie
FormatEvents = False, sofern das Formular die Ereignisse nicht behandelt. - Wird ein Ereignis benötigt, halten Sie die Prozedur frei von Abfragen: Lesen Sie die benötigten Werte einmal (zum Beispiel in
Form_Loadin einDictionary) und schlagen Sie sie dort nach.
de/wiki/msaccess/comctl/troubleshooting/slow-formatting-events.txt · Zuletzt geändert: von Wolfgang van der Stille