delphi colors grid firemonkey

delphi - Cambio del color de fondo de TTextCell en el tiempo de ejecución XE4



colors grid (1)

Gracias Mike. Tuve que jugar un poco, pero lo hice funcionar según su sugerencia. Agregué un TRectangle a mi textcellstyle en el estilocontainer, de la siguiente manera:

textcellstyle : TLayout background: TSubImage rectangle1: TRectangle rectanimation: TRectAnimation

En TFinancialCell.ApplyStyle probé FindStyleResource (''background''), pero esto siempre devuelve nil. Lo cambié a FindStyleResource (''rectangle1'') y funcionó muy bien. ¿Esto se debe a que busca la propiedad StyleName relevante (que obviamente pasa a ''Rectangle1'' para el rectángulo 1) en el inspector de objetos? Todavía no veo la madera para los árboles, estoy seguro de que puedes decir ...

El código de trabajo:

Procedure TFinancialCell.ApplyStyle; var T : TFMXObject; begin inherited; T:=FindStyleResource(''Rectangle1''); If (T<>nil) and (T is TRectangle) then begin If TRectangle(T).Fill<>nil then begin If IsNegative then begin TRectangle(T).Fill.Color:=claRed; Repaint; end; end; end; ApplyStyling; end;

También intenté, como ejercicio separado, poner el código anterior en TFinancialCell.ApplyStyling, y también funcionó allí, por lo que no estoy seguro de cuál es la mejor opción, y ¿por qué?

El resumen de mi comprensión de estos estilos hasta ahora es (corrija / comente según sea necesario):

  1. He creado un estilo llamado textcellstyle, que aplico en TFinancialCell.Create en mi clase TFinancialCell [StyleLookup: = ''textcellstyle''].
  2. Cuando llamo a TFinancialCell.ApplyStyling, puedo acceder directamente a las propiedades Font y FontColor de TFinancialCell, ya que estas propiedades son propiedades de TTextCell.
  3. Si quiero pintar el fondo de las celdas, tengo que llamar explícitamente al componente TRectangle que agregué manualmente al ''estilo'' textcellstyle, y luego acceder a la propiedad Fill etc desde allí.

Trabajé a través del ejemplo publicado aquí como mi punto de partida: Cambiar el fondo de TTextCell en un Firemonkey TGrid

He creado un textcellstyle que hace referencia a una imagen, y esto está funcionando bien. Cuando ejecuto el programa, todas las celdas muestran la imagen de fondo como se esperaba.

Desde el enlace de arriba, Mike Sutton (espero que estés leyendo esto, ¿qué haríamos sin tu aporte?) Escribe (se repite aquí solo para hacerlo más fácil):

"Luego puede establecer cada una de las propiedades de StyleLookup de su celda para usarla, o establecer los estilos StyleName en TextCellStyle para que se recoja automáticamente para cada TTextCell".

A continuación de la consulta sobre cómo cambiar los colores de las fuentes ( Delphi XE4 Firemonkey Grid Control - Estilo de las celdas individualmente ), ¿se pueden establecer los colores de fondo de forma dinámica también?

Mi código para crear las celdas:

Constructor TFinancialCell.Create(AOwner:TComponent); begin inherited; StyleLookup:=''textcellstyle''; StyledSettings:=StyledSettings-[TStyledSetting.ssStyle,TStyledSetting.ssFontColor]; TextAlign:=TTextAlign.taTrailing; end;

Esto aplica mi imagen con éxito a TFinancialCell.

Pero, según la consulta de color de la fuente, me gustaría que el fondo de la imagen se muestre solo cuando se alcanza un cierto valor o lo que sea:

Procedure TFinancialCell.ApplyStyling; begin Font.Style:=[TFontStyle.fsItalic]; If IsNegative then FontColor:=claRed else FontColor:=claGreen; If IsImportant then Font.Style:=[TFontStyle.fsItalic,TFontStyle.fsBold]; If Assigned(Font.OnChanged) then Font.OnChanged(Font); Repaint; end;

Cualquier ayuda sobre cómo hacer esto sería apreciada.