Pregunta

He heredado de Tgroupbox del control nativo de Delphi y anula su método de pintura para dibujar rectángulo redondeado.

   procedure TclTransparentGroupBox.CreateParams(var params : TCreateParams);
   begin
     inherited;
     Params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
   end;

Después de anular los parámetros Crear, el método de pintura es el siguiente.

   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;

El principal problema que me enfrento es que tengo pocas etiquetas en la parte superior del cuadro de grupo transparente. Cuando abro el formulario, las etiquetas se ven bien, pero cuando cambia el texto, se verán visibles algunos rectángulos delimitadores de las etiquetas. Esto se ve extraño en la parte superior de la caja transparente.

Incluso cuando cambio el tamaño del formulario, el cuadro de grupo en sí desaparece, cuando cambio el enfoque a otra aplicación y trajo de vuelta mi aplicación, el cuadro de grupo se dibuja.

¿Me falta algo con respecto al dibujo? ¿Algún mensaje de Windows que necesite cuidar?

Gracias de antemano Rahul

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top