Vcl.Controls.TWinControl.PaletteChanged

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function PaletteChanged(Foreground: Boolean): Boolean; override;

C++

DYNAMIC bool __fastcall PaletteChanged(bool Foreground);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function protected
Vcl.Controls.pas
Vcl.Controls.hpp
Vcl.Controls TWinControl

Beschreibung

Reagiert auf Änderungen der Systempalette, indem die Palette des Steuerelements und die Paletten der untergeordneten Steuerelemente angewendet werden.

PaletteChanged wird aufgerufen, wenn sich die Windows-Systempalette ändert. TWinControl antwortet auf entsprechende Benachrichtigungen durch Anwendung auf die Palette des fensterorientierten Steuerelements im aktuellen Gerätekontext. Dann wird die PaletteChanged-Benachrichtigung an jedes untergeordnete Steuerelement weitergegeben. Wenn von der Änderung der Systempalette auch die aktuelle Palette des Steuerelements betroffen ist, ruft PaletteChanged die Methode Invalidate des Steuerelements auf, um es mit der neuen Palette erneut zu zeichnen.

Windows zeichnet das aktive Fenster mit einer Vordergrundpalette, alle anderen Fenster mit Hintergrundpaletten. Hintergrundpaletten sind Näherungen der in der logischen Palette des Steuerelements angegebenen Farben, berücksichtigen also die Beschränkungen, die sich aus der Verwendung der Vordergrundpalette ergeben. Unter Windows kann nur eine Vordergrundpalette verwendet werden.

PaletteChanged ermöglicht dem Steuerelement das Anwenden der Palette nach einer Änderung der Systempalette. Ist Foreground true, wurde das Formular aktiviert. Das Steuerelement gibt also die neue Vordergrundpalette an. Ist Foreground false, hat eine andere Anwendung oder ein anderes Formular die Vordergrundpalette geändert. Palettenbezogene Steuerelemente müssen deshalb ihre neue Hintergrundpalette als bestmögliche Entsprechung ihrer logischen Palette verwenden.

Besitzt das Steuerelement keine im aktuellen Gerätekontext anzuwendende logische Palette, gibt GetPalette ein Handle mit dem Wert 0 zurück. PaletteChanged realisiert keine Palette für das fensterorientierte Steuerelement. Die Methode gibt nur die Benachrichtigung an die untergeordneten Steuerelemente weiter. Wendet das fensterorientierte Steuerelement (oder eines der untergeordneten Steuerelemente) als Antwort auf PaletteChanged eine Palette im aktuellen Gerätekontext an, gibt diese Methode true zurück.

Überschreiben Sie PaletteChanged, um festzulegen, wie Steuerelemente die Gelegenheit erhalten, eine neue Palette anzuwenden, wenn sich die Windows-Systempalette ändert. Sie können PaletteChanged beispielsweise überschreiben, um die Reihenfolge der Anwendung von Paletten durch untergeordnete Steuerelemente zu ändern, einem bestimmten Steuerelement beim Aktivieren des Formulars die Vordergrundpalette zuzuordnen oder Benachrichtigungen zu Palettenänderungen an benutzerdefinierte Steuerelemente weiterzugeben, die nicht in der VCL, sondern beispielsweise in DLLs implementiert sind.

Sie sollten GetPalette überschreiben statt festzulegen, ob ein fensterorientiertes Steuerelement tatsächlich über eine anzuwendende Palette verfügt, noch den Wert der logischen Palette des Steuerelements ändern.

Anmerkung:  PaletteChanged wird nur aufgerufen, wenn der Bildschirmmodus eine Palettenunterstützung erfordert. Dies ist beispielsweise im 256-Farben-Modus der Fall, nicht aber bei 16 Millionen Farben.

Siehe auch