AdvSmoothTileList Issue - Tiles Flickering

We where using the AdvSmoothTileList component in Delphi 10 Seattle for years with no issues, but when changing to Delphi 12 we migrate to the last TMS VCL UI Pack and started to find this problem.

With the v1.7.1.4 version of the AdvSmoothTileList we get constant flickering.

We use VCL Styles (the "Light" Theme).

Another issue we found was that we are not able to disable the VCL Style for this component. We where forced to reasign the color configuration after the component creation.

This is our color set for our application:

 Header.Fill.Color := $00DBDBDB;
    Header.Fill.ColorTo := clScrollBar;
    Header.Fill.ColorMirror := clNone;
    Header.Fill.ColorMirrorTo := clNone;
    Header.Fill.BorderColor := $00C6C6C6;
    Header.Fill.GradientType := gtVertical;
    Header.Fill.GradientMirrorType := TAdvGradientType.gtNone;
    Header.ArrowColor := clWhite;
    Header.BulletSelectedColor := $00E1A732;

    Footer.ArrowColor := clWhite;
    Footer.Fill.Assign(Header.Fill);

    Fill.Color := clWhite;
    Fill.ColorTo := clNone;
    Fill.ColorMirror := clNone;
    Fill.ColorMirrorTo := clNone;

    Fill.GradientType := gtSolid;
    Fill.GradientMirrorType := TAdvGradientType.gtNone;
    Fill.BorderColor := $006A6866;

    TileAppearance.SmallViewFill.Opacity := 255;
    TileAppearance.SmallViewFill.BorderColor := $00A8A6A6;
    TileAppearance.SmallViewFill.GradientType := gtVertical;
    TileAppearance.SmallViewFill.GradientMirrorType := TAdvGradientType.gtNone;
    TileAppearance.SmallViewFill.Color := $00F5F5F4;
    TileAppearance.SmallViewFill.ColorTo := $00E1E1E1;
    TileAppearance.SmallViewFill.ColorMirror := clNone;
    TileAppearance.SmallViewFill.ColorMirrorTo := clNone;

    TileAppearance.SmallViewFillHover.Opacity := 220;
    TileAppearance.SmallViewFillHover.GradientType := gtVertical;
    TileAppearance.SmallViewFillHover.GradientMirrorType := TAdvGradientType.gtNone;

    TileAppearance.SmallViewFillHover.BorderColor := $00EAB47E;
    TileAppearance.SmallViewFillHover.Color := $00FCF0E4;
    TileAppearance.SmallViewFillHover.ColorTo := $00FCF0E4;
    TileAppearance.SmallViewFillHover.ColorMirror := clNone;
    TileAppearance.SmallViewFillHover.ColorMirrorTo := clNone;

    TileAppearance.SmallViewFillDisabled.Opacity := 220;
    TileAppearance.SmallViewFillDisabled.GradientType := gtSolid;
    TileAppearance.SmallViewFillDisabled.GradientMirrorType := TAdvGradientType.gtNone;
    TileAppearance.SmallViewFillDisabled.BorderColor := $00ACACAC;
    TileAppearance.SmallViewFillDisabled.Color := $00EEEEEE;
    TileAppearance.SmallViewFillDisabled.ColorTo := $00EEEEEE;
    TileAppearance.SmallViewFillDisabled.ColorMirror := clNone;
    TileAppearance.SmallViewFillDisabled.ColorMirrorTo := clNone;

    TileAppearance.SmallViewFillSelected.Opacity := 255;
    TileAppearance.SmallViewFillSelected.GradientType := gtVertical;
    TileAppearance.SmallViewFillSelected.GradientMirrorType := TAdvGradientType.gtNone;
    TileAppearance.SmallViewFillSelected.BorderColor := $00E59D56;
    TileAppearance.SmallViewFillSelected.Color := $00FCE2C8;
    TileAppearance.SmallViewFillSelected.ColorTo := clNone;
    TileAppearance.SmallViewFillSelected.ColorMirror := clNone;
    TileAppearance.SmallViewFillSelected.ColorMirrorTo := clNone;
    TileAppearance.SmallViewFillSelected.GlowGradientColor := $00FCE2C8;

    TileAppearance.LargeViewFill.Opacity := 180;
    TileAppearance.LargeViewFill.GradientType := gtVertical;
    TileAppearance.LargeViewFill.GradientMirrorType := TAdvGradientType.gtNone;
    TileAppearance.LargeViewFill.BorderColor := $00D4D4D4;
    TileAppearance.LargeViewFill.Color := $00F5F5F4;
    TileAppearance.LargeViewFill.ColorTo := $00F5F5F4;
    TileAppearance.LargeViewFill.ColorMirror := clNone;
    TileAppearance.LargeViewFill.ColorMirrorTo := clNone;

    TileAppearance.StatusIndicatorAppearance.Fill.Color := clRed;
    TileAppearance.StatusIndicatorAppearance.Fill.GradientType := gtSolid;
    TileAppearance.StatusIndicatorAppearance.Fill.BorderColor := clGray;
    TileAppearance.StatusIndicatorAppearance.Font.Color := clWhite;

    TileAppearance.DeleteIndicatorAppearance.Fill.Color := clBlack;
    TileAppearance.DeleteIndicatorAppearance.Fill.GradientType := gtSolid;
    TileAppearance.DeleteIndicatorAppearance.Fill.BorderColor := clWhite;
    TileAppearance.DeleteIndicatorAppearance.Font.Color := clWhite;

What is the setting for DoubleBuffered?
We will introduce the StyleElements property with which this can be controlled in the next update.

Hi,

The DoubleBuffered property is set to True.

Kind Regards.

I retested the demos with Delphi 12 here and I could not see any flickering.
If a problem persists, please isolate this and provide a sample source app with which we can reproduce this here.

It seems that the issue depends on the machine graphic chipset. It doesn't happens in all PCs. Some of our customers found this problem and others don't.

Did you check with Embarcadero what change in Delphi 12 could cause this?

No. I don't think that Embarcadero will give us support on an issue with a third party component.

If this was not an issue for you with Delphi 10 and now it is in Delphi 12, it is clearly due to a change in VCL

In Delphi 10 we use an older version of the component so we can't compare the behavior. In the changelog I see that It was added VCL Styles support in a recent version. Maybe that change is related to this issue.

In the next TMS VCL UI Pack release, there will be a StyleElements property on TAdvSmoothTileList with which you can disable the use of VCL styles in TAdvSmoothTileList.
I suggest you test this update when it is released.

Ok, Thanks.

Hi, I tried with the lastest version, disabling all StyleElements properties for the component and the flickering issue still appears.
Here you can watch a video capture: https://idsplus.net/descargas/cap_flickering.mp4

Can you add this form to a test project and send it so we have the exact setup of your TAdvSmoothTileList and can test it here?

Hi, here you have a demo project where you can see the entire setup working:
http://idsplus.net/descargas/demo_AdvSmoothTileList_issue.zip

I tested this here on Delphi 12 but I could not see any flickering here
advsmoothtilelist

Is this happening on multiple machines for you?

I Sent you a private message

There was no information at all that this issue is experience in connection with a virtualized server.

You might have a look at:

That's it!

I didn't know about then TApplication.SingleBufferingInRemoteSessions property.

I set it to False and the problem it's fixed.

Thanks a lot for your help.

Kind Regards.