Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Cambiar colores en cabecera de TStringGrrid (https://www.clubdelphi.com/foros/showthread.php?t=90824)

jhonalone 12-09-2016 14:05:15

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.

AgustinOrtu 12-09-2016 18:06:01

El header está en la sección protegida del control. Para acceder debes usar un ayudante (class helper) o una subclase

Ejemplo usando ayudante para cambiar la fuente

El estilo como y cual pusiste? Si pones un estilo Android no te va a funcionar en otro sistema operativo que no sea Android, lo mismo para Windows, iOs y Mac

jhonalone 13-09-2016 15:42:51

Gracias, Agustín por responderme. Te estás convirtiendo en un miembro importante de la comunidad Delphi. Ya te he visto resolver bastantes cuestiones de los foreros "torpes" como yo.

Acabo de llegar a casa. No he probado tu link para el ejemplo. Ya te contaré.

Esta es la ruta de la que he sacado el estilo: C:\RadStudio10\17.0\Redist\styles\Fmx\MetropolisUIGreen.Style

Lo utilizo con la plataforma Android y ocurrió lo que te dije, el dispositivo mostró el estilo por defecto, nada que ver con el que se veía en la pantalla master con el Style Android, que sí se había actualizado con el nuevo estilo.

Si se puede cambiar una parte (el header) solamente, si lo sabes, dime cómo por favor.

Si, (te dije que no he visto el link que me has dejado) si con este link puedo cambiar el fondo y el texto, me servirá.

Un saludo. Gracias. Te cuento cuando pueda verlo esta tarde.

jhonalone 13-09-2016 16:04:02

Bueno. Agustín.
Me dije: "Voy a echar un vistazo rápido al link". He visto que es tuyo y me parece estupendo.

Sólo le pongo dos "pegas" para mi problema, que no para el código.

Yo necesito cambiar el background sobre todo y necesito tus instrucciones para usar el código.

Saludos cordiales, gracias.


La franja horaria es GMT +2. Ahora son las 23:34:25.

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