Das gute Volk in den visguy-Foren lieferte genügend Einsicht, um die hier gestellte Frage zu lösen.
Die User.Forecolour
Eigenschaft verwendete eine Formel ( INDEX(...)
), um den gewünschten Farbwert zu bestimmen. Diese Verwendung der Formel passte nicht gut zur FillForegnd
Zelle.
Es gibt drei einfache Lösungen. Beide Lösungen verwenden SETF(...)
FillForegnd anstelle einer Formel.
- Die
User.Forecolour
Eigenschaft kann verwendenSETF(GetRef(FillForegnd),INDEX(...))
. Dadurch wird ein Wert erzwungen,FillForegnd
und es ist die einfachste Änderung des ursprünglichen Codes. Ein Nachteil ist, dass alle Benutzeränderungen an der Form selbst dieFillForegnd
Zelle überschreiben, die erst dann korrigiert wird, wenn der Benutzer die richtigen Formdaten erneut auswählt. - Eine zusätzliche
User.X
Zelle kann erstellt werden. DieSETF
Antwort würde 1 seinGetRef(User.X)
.FillForegnd
würde enthaltenGuard(User.X)
. Dadurch wird verhindert, dass Benutzer die Farben zufällig ändern. - Die dritte Option erweitert beide vorherigen Antworten. In
User.ForeColour
:=SETF(GetRef(FillForegnd),"GUARD(INDEX(...))")
. Dadurch wirdGUARD
die Farbe im Vordergrundfarbenbereich nach Bedarf festgelegt.
Alle diese Lösungen nutzen die Eigenschaft, SETF
die Zellen überschreiben kann, die über einen GUARD
normalen Benutzereingriff in die GUI (Seitenbereich Formen) verfügen .