TMSFMXTableView and Transparent.Style

Hi, I am trying to use the TMSFMXTableView with the Transparent.Style.  If I click AdaptToStyle, it sorta works but not really as the style is not transparent.  If I uncheck the AdaptToStyle and then go in and define a custom style and set all the itembackground etc Fill to None, I still see a gray background.  If I then click AdaptToStyle (to make it true), I get a design-time exception:

[2366D248]{TMSFMXPackPkgDXE9.bpl} FMX.TMSTableView.Tmstableview.TTMSFMXTableViewItem.Shape$qqrv (Line 6728, "FMX.TMSTableView.pas" + 2) + $3
[5005F898]{rtl230.bpl  } System.TObject.GetInterface (Line 16559, "System.pas" + 8) + $A
[5005F8E1]{rtl230.bpl  } System.TObject.GetInterface (Line 16566, "System.pas" + 15) + $10
[5017100F]{rtl230.bpl  } System.Classes.TComponent.QueryInterface (Line 16120, "System.Classes.pas" + 3) + $6
[50067110]{rtl230.bpl  } System.@IntfClear (Line 36557, "System.pas" + 10) + $0
[50063D44]{rtl230.bpl  } System.@FinalizeArray (Line 31934, "System.pas" + 139) + $0
[50063C34]{rtl230.bpl  } System.@FinalizeRecord (Line 31637, "System.pas" + 25) + $0
[5005A19C]{rtl230.bpl  } System.@FreeMem (Line 4650, "System.pas" + 20) + $0
[500601B5]{rtl230.bpl  } System.TMonitor.Destroy (Line 17800, "System.pas" + 3) + $2
[5006018D]{rtl230.bpl  } System.TMonitor.Destroy (Line 17792, "System.pas" + 5) + $2
[5005F7FF]{rtl230.bpl  } System.TObject.CleanupInstance (Line 16405, "System.pas" + 24) + $0
[5006017C]{rtl230.bpl  } System.TMonitor.Destroy (Line 17787, "System.pas" + 0) + $0
[5005F7FF]{rtl230.bpl  } System.TObject.CleanupInstance (Line 16405, "System.pas" + 24) + $0
[5005A19C]{rtl230.bpl  } System.@FreeMem (Line 4650, "System.pas" + 20) + $0
[5005F5F8]{rtl230.bpl  } System.TObject.FreeInstance (Line 16193, "System.pas" + 2) + $2
[5006017C]{rtl230.bpl  } System.TMonitor.Destroy (Line 17787, "System.pas" + 0) + $0
[5005F7FF]{rtl230.bpl  } System.TObject.CleanupInstance (Line 16405, "System.pas" + 24) + $0
[5005A19C]{rtl230.bpl  } System.@FreeMem (Line 4650, "System.pas" + 20) + $0
[5005F5F8]{rtl230.bpl  } System.TObject.FreeInstance (Line 16193, "System.pas" + 2) + $2
[5005FECE]{rtl230.bpl  } System.@ClassDestroy (Line 17542, "System.pas" + 0) + $2
[50156D1B]{rtl230.bpl  } System.Classes.TInterfaceList.Destroy (Line 4983, "System.Classes.pas" + 4) + $6
[5005F77C]{rtl230.bpl  } System.TObject.Free (Line 16261, "System.pas" + 1) + $4
[08D22C8B]{fmx230.bpl  } FMX.Types.AlignObjects (Line 3522, "FMX.Types.pas" + 42) + $1
[08C97528]{fmx230.bpl  } FMX.Controls.TControl.SetAnchors (Line 4458, "FMX.Controls.pas" + 18) + $26
[5006017C]{rtl230.bpl  } System.TMonitor.Destroy (Line 17787, "System.pas" + 0) + $0
[5005F7FF]{rtl230.bpl  } System.TObject.CleanupInstance (Line 16405, "System.pas" + 24) + $0
[5005A19C]{rtl230.bpl  } System.@FreeMem (Line 4650, "System.pas" + 20) + $0
[5005F5F8]{rtl230.bpl  } System.TObject.FreeInstance (Line 16193, "System.pas" + 2) + $2
[5005FECE]{rtl230.bpl  } System.@ClassDestroy (Line 17542, "System.pas" + 0) + $2
[5005F76D]{rtl230.bpl  } System.TObject.Destroy (Line 16253, "System.pas" + 1) + $4
[5006726A]{rtl230.bpl  } System.TInterfacedObject._Release (Line 37541, "System.pas" + 7) + $7
[50067110]{rtl230.bpl  } System.@IntfClear (Line 36557, "System.pas" + 10) + $0
[5005FA85]{rtl230.bpl  } System.@AsClass (Line 16680, "System.pas" + 2) + $8
[2366D6F1]{TMSFMXPackPkgDXE9.bpl} FMX.TMSTableView.Tmstableview.TTMSFMXTableViewItem.ShapePlaceHolder$qqrv (Line 6898, "FMX.TMSTableView.pas" + 2) + $3
[236643CE]{TMSFMXPackPkgDXE9.bpl} FMX.TMSTableView.Tmstableview.TTMSFMXTableView.UpdateLookupBar$qqrv (Line 2757, "FMX.TMSTableView.pas" + 23) + $21
[23666F6A]{TMSFMXPackPkgDXE9.bpl} FMX.TMSTableView.Tmstableview.TTMSFMXTableView.ApplyStyle$qqrv (Line 3952, "FMX.TMSTableView.pas" + 15) + $3
[08C99DE8]{fmx230.bpl  } FMX.Controls.TStyledControl.ApplyStyleLookup (Line 5669, "FMX.Controls.pas" + 49) + $0
[235BBD04]{TMSFMXPackPkgDXE9.bpl} FMX.TMSBaseControl.Tmsbasecontrol.TTMSFMXBaseControl.SetAdaptToStyle$qqrxo (Line 1844, "FMX.TMSBaseControl.pas" + 5) + $5
[50128762]{rtl230.bpl  } System.TypInfo.SetOrdProp (Line 2787, "System.TypInfo.pas" + 28) + $0
[2118C07A]{designide230.bpl} DesignEditors.TPropertyEditor.SetOrdValue (Line 839, "DesignEditors.pas" + 2) + $E
[211E24FB]{designide230.bpl} VCLEditors.TBooleanProperty.MouseUp (Line 1899, "VCLEditors.pas" + 5) + $10
[2137F4A9]{vclide230.bpl} PropBox.TCustomPropListBox.ItemMouseUp (Line 1646, "PropBox.pas" + 17) + $1B
[2137F69F]{vclide230.bpl} PropBox.TCustomPropListBox.MouseUp (Line 1711, "PropBox.pas" + 1) + $D
[50993BA4]{vcl230.bpl  } Vcl.Controls.TControl.DoMouseUp (Line 7493, "Vcl.Controls.pas" + 2) + $28
[50993C24]{vcl230.bpl  } Vcl.Controls.TControl.WMLButtonUp (Line 7506, "Vcl.Controls.pas" + 9) + $6
[21384EB4]{vclide230.bpl} IDEInspListBox.TInspListBox.WMLButtonUp (Line 1643, "IDEInspListBox.pas" + 3) + $4
[509931FD]{vcl230.bpl  } Vcl.Controls.TControl.WndProc (Line 7249, "Vcl.Controls.pas" + 91) + $6
[0E0A4BB8]{TrackingSystem230.bpl} TrackingSystemHelp.CBTHookProc (Line 211, "TrackingSystemHelp.pas" + 27) + $F
[5099754B]{vcl230.bpl  } Vcl.Controls.TWinControl.IsControlMouseMsg (Line 9842, "Vcl.Controls.pas" + 1) + $9
[50997D3D]{vcl230.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10079, "Vcl.Controls.pas" + 158) + $6
[509BBAD9]{vcl230.bpl  } Vcl.StdCtrls.TCustomListBox.WndProc (Line 7122, "Vcl.StdCtrls.pas" + 55) + $5
[5099735C]{vcl230.bpl  } Vcl.Controls.TWinControl.MainWndProc (Line 9786, "Vcl.Controls.pas" + 3) + $6
[50172214]{rtl230.bpl  } System.Classes.StdWndProc (Line 16886, "System.Classes.pas" + 8) + $0
[50ADCB6F]{vcl230.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10443, "Vcl.Forms.pas" + 23) + $1
[50ADCBB2]{vcl230.bpl  } Vcl.Forms.TApplication.HandleMessage (Line 10473, "Vcl.Forms.pas" + 1) + $4
[50ADCEE5]{vcl230.bpl  } Vcl.Forms.TApplication.Run (Line 10611, "Vcl.Forms.pas" + 26) + $3

If I keep clicking AdaptToStyle back and forth, I see it is almost working as I can see the subtle grid background of the Transparent.Style.  However, there is the issue of the exception so the TMSFMXTableView is assuming something it shouldn't be.  

How do I get TMSFMXTableView working properly with Transparent.Style?

Regards,
Tom
Hi, 

Can you try with the following code based on AdaptToStyle := True and the Transparent style loaded?

procedure TForm1.TMSFMXTableView1ApplyStyleLookup(Sender: TObject);
begin
  (TMSFMXTableView1.Children[0] as TRectangle).Fill.Kind := TBrushKind.None;
  TMSFMXTableView1.Fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetListDetailContainer as TRectangle).fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetListContainer as TRectangle).fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetDefaultItem as TTMSFMXTableViewItemShape).fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetListBackGround as TRectangle).fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetHeaderRectangle as TRectangle).fill.Kind := TBrushKind.None;
  (TMSFMXTableView1.GetFooterRectangle as TRectangle).fill.Kind := TBrushKind.None;
end;

The elements we load internally are coming from a general style implementation. We are investiging here if we can detect when a transparent style is loaded.

Hi Pieter,


Thanks, it looks a lot better to me (though I tried to add an innergloweffect to get it closer to the listbox look; unfortunately that gives a glow to everything including the text and image).  I am still seeing very infrequently some instability though, but I am unable to figure it out why or when.  There is one other problem though; the filter box is white with white text.

Regards,
Tom

Hi, 


The glow is applied to all objects unfortunately, this is by design in FireMonkey.
We have improved the behavior of the transparent style and the serach edit , the next version will address this.

Kind Regards, 
Pieter

Great!  Thank you.


BTW, I wanted to mention that the table item.Tag is an Integer.  This should really be NativeInt so that it doesn't give strange results when people assign a 64-bit pointer to it in 64-bit applications.

Regards,
Tom

Ok, that makes sense and we'll apply this.