Yo en este caso (y tal vez me equivoco) optaría por deribar no de un TStringGrid, sino de un componente que te sirve de contenedor de ambos, por ejemplo un TRectangle o un TPanel.
Otra opción es generar un Frame con lo que necesitas y reaprovecharlo. Tal vez esta opción sea más sencilla si no estás "muy puesto" en el tema de diseńo de componentes de FMX (que no es igual que en VCL).
Una prueba rápida:
Código Delphi
[-]unit uStringGridProps;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects, FMX.Grid,
FMX.Grid.Style,FMX.Presentation.Factory,FMX.Presentation.Style;
type
TStringGridProps = class(TRectangle)
private
stGrid: TStringGrid;
RecProps, RecFiltro: TRectangle;
FVisibleGrid: boolean;
FVisibleProps: boolean;
FVisibleFiltro: boolean;
procedure SetVisibleFiltro(const Value: boolean);
procedure SetVisibleProps(const Value: boolean);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Grid:TStringGrid read stGrid write stGrid;
property VisibleGrid:boolean read FVisibleGrid;
property VisibleProps:boolean read FVisibleProps write SetVisibleProps;
property VisibleFiltro:boolean read FVisibleFiltro write SetVisibleFiltro;
end;
procedure Register;
implementation
uses
System.UITypes;
procedure Register;
begin
RegisterComponents('Samples', [TStringGridProps]);
end;
constructor TStringGridProps.Create(AOwner: TComponent);
begin
inherited Create(Owner);
FVisibleGrid := True;
FVisibleProps := False;
FVisibleFiltro := False;
stGrid := TStringGrid.Create(Self.Parent);
stGrid.Name := 'stGrig';
stGrid.Parent := Self.Parent;
stGrid.Align := TAlignLayout.Client;
RecProps := TRectangle.Create(Self.Parent);
RecProps.Name := 'RecProps';
RecProps.Parent := Self.Parent;
RecProps.Align := TAlignLayout.Top;
RecProps.fill.Color := TAlphaColorRec.Darkgray;
RecProps.Height := 80;
RecProps.Tag := 1;
RecFiltro := TRectangle.Create(Self.Parent);
RecFiltro.Name := 'RecFiltro';
RecFiltro.Parent := Self.Parent;
RecFiltro.Align := TAlignLayout.Top;
RecFiltro.fill.Color := TAlphaColorRec.Darkgray;
RecFiltro.Height := 80;
RecFiltro.Tag := 1;
Self.Repaint;
end;
destructor TStringGridProps.Destroy;
begin
inherited;
end;
procedure TStringGridProps.SetVisibleFiltro(const Value: boolean);
begin
FVisibleFiltro := Value;
RecFiltro.Visible := FVisibleFiltro;
Repaint;
end;
procedure TStringGridProps.SetVisibleProps(const Value: boolean);
begin
FVisibleProps := Value;
RecFiltro.Visible := FVisibleProps;
Repaint;
end;
initialization
TPresentationProxyFactory.Current.Register(TStringGridProps, TControlType.Styled, TStyledPresentationProxy);
finalization
TPresentationProxyFactory.Current.Unregister(TStringGridProps, TControlType.Styled, TStyledPresentationProxy);
end.