Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Colorear secciones en un THeaderControl (https://www.clubdelphi.com/foros/showthread.php?t=96171)

Angel.Matilla 27-03-2023 19:42:32

Colorear secciones en un THeaderControl
 
En un aplicación en BCB 6 me interesaría poder colorear o diferenciar de alguna manera determinadas secciones de un THeaderControl. Estuve mirando por el foro y sólo encontré una respuesta de roman en la que cita el evento OnCustomDraw en Pintar de un color un THeaderSection o la cabecera de un TListColumn. He estado mirando y, al menos en Builder, tal evento no existe para THeaderControl o no soy capaz de encontrarlo. ¿Alguien me puede guiar en como modificar el aspecto de una sección en este elemento?

Neftali [Germán.Estévez] 28-03-2023 09:16:12

A mi un código como este me funciona (lo he probado en una versión más nueva de Delphi, eso sí):

Código Delphi [-]
procedure TForm3.HeaderControl1DrawSection(HeaderControl: THeaderControl;
  Section: THeaderSection; const Rect: TRect; Pressed: Boolean);
var
  oldColor:TColor;
begin
  if (Section.Index = 2) then begin
    HeaderControl.Canvas.FloodFill(Rect.Left + 1, Rect.Top + 1, clInfoBk, TFillStyle.fsSurface);
    HeaderControl.Canvas.Brush.Color := clInfoBk;
    HeaderControl.Canvas.Pen.Style := TPenStyle.psClear;
    HeaderControl.Canvas.Rectangle(Rect);
  end;
end;



Lo único importante, es que la tercera columna (en este caso Index=2) hay que definirla con la propiedad Style=hsOwnerDraw.

Si no defines así esa propiedad, el evento no salta sobre esa columna. Es decir, en mi ejemplo, que tiene definidas tres columnas, y sólo la tercera definida como hsOwnerDraw, el evento OnDrawSection sólo salta en la tercera.

Angel.Matilla 28-03-2023 10:16:15

¡Perfecto! Muchas gracias.


La franja horaria es GMT +2. Ahora son las 15:58:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi