Ver Mensaje Individual
  #3  
Antiguo 14-03-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - Espańa
Posts: 18.286
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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;

{ TStringGridProps }

constructor TStringGridProps.Create(AOwner: TComponent);
begin
  inherited Create(Owner);

  // valores por defecto
  FVisibleGrid := True;
  FVisibleProps := False;
  FVisibleFiltro := False;


    // StringGrid
    stGrid := TStringGrid.Create(Self.Parent);
    stGrid.Name := 'stGrig';
    stGrid.Parent := Self.Parent;
    stGrid.Align := TAlignLayout.Client;
    // Rectangulo de prppiedades
    RecProps := TRectangle.Create(Self.Parent);
    RecProps.Name := 'RecProps';
    RecProps.Parent := Self.Parent;
    RecProps.Align := TAlignLayout.Top;
    // RecBtFirst.Stroke.Kind := Stroke.Kind.bkNone;
    RecProps.fill.Color := TAlphaColorRec.Darkgray;
    RecProps.Height := 80;
    RecProps.Tag := 1;
    // Rectangulo de filtro
    RecFiltro := TRectangle.Create(Self.Parent);
    RecFiltro.Name := 'RecFiltro';
    RecFiltro.Parent := Self.Parent;
    RecFiltro.Align := TAlignLayout.Top;
    // RecBtFirst.Stroke.Kind := Stroke.Kind.bkNone;
    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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita