Boîte de groupe transparent
-
30-10-2019 - |
Question
J'ai hérité de Tgroupbox du contrôle natif de Delphi et remplace sa méthode de peinture pour dessiner un rectangle arrondi.
procedure TclTransparentGroupBox.CreateParams(var params : TCreateParams);
begin
inherited;
Params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;
Après avoir remplacé les paramètres de création, la méthode de peinture est comme ci-dessous.
procedure TclTransparentGroupBox.Paint;
begin
// Draw the rounded rect to show the group box bounds
Canvas.Pen.Color := clWindowFrame;
Canvas.RoundRect(5, 15, ClientRect.Right - 5, ClientRect.Bottom - 5, 10, 10);
if Caption <> EmptyStr then
begin
Canvas.Brush.Style := bsClear;
Canvas.TextOut(10, 0, Caption);
end;
end;
Le problème majeur que je suis confronté est que j'ai quelques étiquettes au-dessus de la boîte de groupe transparente. Lorsque j'ouvre le formulaire, les étiquettes ont l'air bien, mais lorsque le texte change, certains rectangles de délimitation des étiquettes seront visibles. Cela semble bizarre sur la boîte transparente.
Même lorsque je redimensive le formulaire, la boîte de groupe elle-même disparaît, lorsque je change le focus en une autre application et que je ramène mon application, la boîte de groupe se dessine.
Est-ce que je manque quelque chose en ce qui concerne le dessin? Tous les messages Windows dont je dois prendre soin ???
Merci d'avance Rahul
Pas de solution correcte