Ver Mensaje Individual
  #1  
Antiguo 12-09-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
Cambiar colores en cabecera de TStringGrrid

Hola de nuevo, amigos.

Tengo algunas cuestiones sin resolver en el foro y creo que es porque hago propuestas muy raras. Pero me gusta personalizar mis proyectos.

La de hoy se refiere al THeader de un TStringGrid.

Con los colores que trae por defecto, se distingue muy poco las filas del encabezado en algunos dispositivos y por éso me he planteado cambiar los colores del texto y del fondo de la cabecera del TStringGrid.

He buscado y rebuscado en el foro, en Google y en StackOverflow sin éxito.

Quizá pido algo que no se puede hacer, aunque en tiempo de diseño lo he intentado con los .style que vienen en el paquete. Con esto he tenido dos problemas, bueno tres (el tercero es mi desconocimiento de este sistema de personalizar). Los otros dos son:

1.- No sé cómo personalizar la cabecera sola. (Si es que se puede)
2.- Cuando cambio el estilo completo, se ve bien en tiempo de diseño, pero al ejecutar el programa en la tableta, no se ven los colores del estilo, sino los originales.

Mi intención es cambiar solamente los colores de la cabecera, Fondo y Texto.

He visto en la ayuda que el THeader tiene los distintos objetos (hijos) representados por Header.THeaderItems, los cuales tienen algunas propiedades como Font, FontColor, Header... que podrían servirme con las modificaciones adecuadas, pero tengo un problema anterior, no sé como acceder al Header del TStringGrid.

En el foro he encontrado algo... esto y también esto otro
pero se refiere a Windows y yo estoy en Firemonkey (Android/Ios), y no sé como adaptarlo.

También he estado probando con esto:
Código Delphi [-]
procedure TEditaAvis.Memo1ApplyStyleLookup(Sender: TObject);
var Obj: TFmxObject;
    Rectangle1: TRectangle;
begin
     Obj := StringGrid1.FindStyleResource('background');
     if Obj <> nil then
     begin
          TControl(Obj).Margins   := TBounds.Create(TRectF.Create(2, 2, 2, 2));
          Rectangle1              := TRectangle.Create(Obj);
          Obj.AddObject(Rectangle1);
          Rectangle1.Align        := TAlignLayout.Contents;
          Rectangle1.Fill.Color   := claLightgreen;
          Rectangle1.Stroke.Color := claNull;
          Rectangle1.HitTest      := False;
          Rectangle1.SendToBack;
     end;
end;

Modificando "Obj := Memo1.FindStyleResource('background');", para intentar conseguir(sin éxito) el fondo del THeader.

Bueno, resumiendo: os cuento todo esto, para que no penséis que no me lo he trabajado. Llevo 3 días sólo con esto.

Agradecería cualquier solución. Y si alguien sabe que no existe... por favor, que me lo diga para no seguir trabajando en vano.

Saludos a todos y gracias de antemano.

Última edición por jhonalone fecha: 12-09-2016 a las 14:09:39.
Responder Con Cita