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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top