Vcl.Controls.TWinControl.PaletteChanged

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

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

C++

DYNAMIC bool __fastcall PaletteChanged(bool Foreground);

Propriétés

Type Visibilité  Source Unité  Parent
function protected
Vcl.Controls.pas
Vcl.Controls.hpp
Vcl.Controls TWinControl

Description

Répond aux modifications de la palette système en réalisant la palette du contrôle et la palette de chacun de ses contrôles enfant.

PaletteChanged est appelée automatiquement quand la palette système Windows change. TWinControl répond à ces notifications en essayant de réaliser, si elle existe, la palette du contrôle fenêtré dans le contexte de périphérique en cours puis en transmettant la notification PaletteChanged à chacun de ses contrôles enfant. Si les modifications de la palette système provoquent un changement des valeurs réelles dans la palette du contrôle, PaletteChanged invalide le contrôle pour qu'il soit redessiné en utilisant la nouvelle palette.

Windows peint la fenêtre active en utilisant une palette de premier plan alors que les autres fenêtres sont obligées d'utiliser les palettes d'arrière-plan. Les palettes d'arrière-plan correspondent approximativement aux couleurs spécifiées par la palette logique du contrôle, compte tenu des limitations imposées par l'implémentation de la palette de premier plan. Windows n'utilise qu'une seule palette de premier plan.

PaletteChanged permet au contrôle d'obtenir une nouvelle réalisation de sa palette quand la palette système change. Si Foreground a la valeur true, la fiche a été activée et le contrôle spécifie la nouvelle palette de premier plan. Si Foreground a la valeur false, une autre application ou une autre fiche a modifié la palette de premier plan, les contrôles affectés par la palette disponible doivent réaliser leurs nouvelles palettes d'arrière-plan pour correspondre au mieux à leur palette logique.

Si le contrôle n'a pas de palette logique à réaliser dans le contexte de périphérique en cours, GetPalette renvoie un handle de 0 et PaletteChanged n'essaye pas de réaliser la palette du contrôle fenêtré. A la place, elle se contente de transmettre la notification aux contrôles enfant. Si le contrôle fenêtré ou l'un de ses contrôles enfant réalise une palette dans le contexte de périphérique en cours en réponse à PaletteChanged, cette méthode renvoie true.

Surchargez PaletteChanged pour modifier la manière dont les contrôles ont l'opportunité de réaliser une nouvelle palette lors d'un changement de la palette système de Windows. Par exemple, surchargez PaletteChanged pour modifier l'ordre dans lequel les contrôles enfant réalisent leur palette, pour donner à un contrôle particulier la palette d'avant-plan lors de l'activation de la fiche ou pour transmettre la notification de changement de la palette à des contrôles personnalisés implémentés hors du VCL, comme dans des DLL.

Surchargez GetPalette pour modifier la manière dont le contrôle fenêtré obtient effectivement une palette à réaliser ou pour modifier les valeurs de la palette logique du contrôle.

Remarque :  La méthode PaletteChanged est appelée uniquement si le mode vidéo à l'exécution nécessite la gestion des palettes. C'est le cas des modes 256 couleurs, mais pas des modes 16 millions de couleurs.

Voir aussi