Delphi Firemonkey DX Seattle TTabControl 在 TVertScrollBox 中时无法正确重新打印

Delphi Firemonkey DX Seattle TTabControl not reprinting correctly when inside a TVertScrollBox

这在 Delphi XE8

中有效

这是一个示例项目 https://github.com/dangas56/DelphiDXSeattle-BrokenTabControl

当键盘在设备上弹出时,我们有一个 VertScrollBox
并有多个选项卡控件和选项卡项在屏幕之间轻弹
注意到 Delphi DX Seattle

中的标签有时无法正确打印

这是要重现的代码示例 - 您可以从上面的 git link 下载示例

procedure TForm2.tbcMainChange(Sender: TObject);
begin
  if tbcMain.ActiveTab = tbtmSettings then
    tbcMain.TabPosition := TTabPosition.None
  else begin
    tbcMain.TabPosition := TTabPosition.Bottom;
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  tbcMain.ActiveTab := tbtmHome;
end;

这是主屏幕的示例,单击第二个选项卡可将原始 tabControl 上的 TabPosition 设置为 none(以隐藏选项卡)。

这是第二个选项卡 - 通常底部有更多选项卡项目
当我们单击按钮返回原始选项卡时,它将原始选项卡的 Tabposition 设置为底部并将活动项目设置为第一个选项卡项目


正如您在下面看到的,它没有重新打印屏幕底部的选项卡项

我们找到了一个临时修复程序
而不是仅仅将 tabPosition 从 none 设置到底部,例如

tbcMain.TabPosition := TTabPosition.Bottom;<br>

如果你这样做似乎又可以重印了

tbcMain.TabPosition := TTabPosition.Bottom;
tbcMain.TabPosition := TTabPosition.Dots;
tbcMain.TabPosition := TTabPosition.Bottom;