Lade...
 

Widget Import und FillWindow, DrainWindow, ClearWindow

Widget Import und FillWindow / DrainWindow / ClearWindow

Semantik ab Dll-Version 230747

Die Anweisungen FillWindow / DrainWindow / ClearWindow beziehen sich grundsätzlich nur auf Widgets aus dem gleichen Import-Context. Bezieht sich die Anweisung auf das gesamte Fenster, dann werden nur die Komponenten des Fensters beeinflusst, die zum gleichen Import-Context gehören, wie das auslösende Widget.
Wichtig: Wird die Anweisung von einem Widget aus dem Consumer-Fenster ausgelöst, dann werden auch nur die Widgets des Consumers beeinflusst, die importierten Widgets werden ignoriert!

Diese Regelung ermöglicht es, ganze Komponenten in ein Fenster zu importieren, ohne dass sich Consumer oder das importierte Widget gegenseitig ungewollt beeinflussen. Dies ermöglicht auch den mehrfachen Import der gleichen Komponente in ein Fenster ohne dass bei einem FillWindow beide Komponenten mit dem gleichen Objekt befüllt werden. Oder kurz: Das importierte Widget muss nicht wissen, dass es importiert wird, um sich korrekt zu verhalten.

Die STACK-Sonderregel der Widgetsuche gilt auch hier. Das heißt: Wird als Widget-Parameter ein CX_WIDGET-Objekt auf dem Stack an die Anweisung übergeben (als Einstiegspunkt oder Ziel-Widget), dann wird der Import-Context nicht mehr beachtet und das gesamte Widget/Fenster mit allen Unterwidgets (egal, ob importiert oder nicht) wird von der Anweisung beeinflusst.

Diese Regel ermöglicht es zum einen, eine importierte Komponente gezielt zu füllen/drainen/clearen und zum anderen bietet sie eine Möglichkeit, die grundsätzlich sinnvolle (aber sehr strikte) Kapselung von importierten Widgets aufzubrechen, falls das Consumer-Fenster und das importierte Widget sich gegenseitig beeinflussen sollen oder mehr voneinander wissen müssen (also stärker gekoppelt sind).

Semantik bis Dll-Version 230747

Im Context des Consumers beziehen sich die Anweisungen FillWindow / DrainWindow / ClearWindow auf das gesamte Fenster und beeinflussen auch die importierten Widgets.

Im Context eines importierten Widgets beziehen sich die Anweisungen FillWindow / DrainWindow nur die auf Widgets des gleichen Import-Contexts. Falls der Import-Context eines Widgets/Fensters nicht passt, dann werden dessen Unterwidgets gänzlich ignoriert. Dies hat zur Folge, dass FillWindow / DrainWindow ohne Angabe eines Zielwidgets in importierten Widgets nie sinnvoll ist, da die Anweisungen beim Consumer-Fenster (dessen Import-Context nicht zum importierten Widget passt) abbricht und die Unterwidgets gar nicht erst prüft.

ClearWindow beachtet in importierten Widgets den Import-Context nicht und beeinflusst immer alle Widgets eines Fensters.

 

zurück zur Einführung Widget Providing