Delphi FireMonkey FlowLayout是';t根据visible属性刷新项目

Delphi FireMonkey FlowLayout是';t根据visible属性刷新项目,delphi,firemonkey,Delphi,Firemonkey,你好吗?希望你一切顺利。 我的问题:我有一个FlowLayout,里面有很多布局,我需要根据单选按钮选择隐藏一些,在设计时它工作正常,我将visible属性设置为false,所有其他布局都以正确的方式重新对齐,但当我在运行时这样做时它不工作,它在已隐藏的布局和下一个布局之间保持白色间隙。当我手动调整大小(转到窗体边框并拖动一点)时,它会重新调整大小并获得正确的结果,但是如果我选择另一个收音机,则布局会返回并覆盖另一个布局,因此我需要再次手动调整大小以重新调整大小。我试图查看Resize的源代码,

你好吗?希望你一切顺利。 我的问题:我有一个FlowLayout,里面有很多布局,我需要根据单选按钮选择隐藏一些,在设计时它工作正常,我将visible属性设置为false,所有其他布局都以正确的方式重新对齐,但当我在运行时这样做时它不工作,它在已隐藏的布局和下一个布局之间保持白色间隙。当我手动调整大小(转到窗体边框并拖动一点)时,它会重新调整大小并获得正确的结果,但是如果我选择另一个收音机,则布局会返回并覆盖另一个布局,因此我需要再次手动调整大小以重新调整大小。我试图查看Resize的源代码,但没有得到任何相关信息。我尝试的是:重新油漆、重新排列、竖立、重新处理。我有没有办法强制刷新组件

procedure
    TFrmApontamentoProducaoOrdemProducao.rbOrdensProducaoQuantidadeParcialClick(
    Sender: TObject);
begin
  if not lytQuantidadeParcial.Visible then
    lytQuantidadeParcial.Visible := True;
  // Tried to realign here
end;

procedure
    TFrmApontamentoProducaoOrdemProducao.rbOrdensProducaoQuantidadeTotalClick(
    Sender: TObject);
begin
  if lytQuantidadeParcial.Visible then
    lytQuantidadeParcial.Visible := False;
  // Tried to realign here
end;

这是一个简单的代码,但它给了我一个小问题。感谢您的帮助,如果您需要更多代码或更多详细信息,请告诉我。

您必须使用一对
FlowLayout1.BeginUpdate
FlowLayout1.EndUpdate
为确保更新计数器保持同步,还应使用
try..finally..end

比如说

procedure TForm21.Button6Click(Sender: TObject);
begin
  FlowLayout1.BeginUpdate;
  try
    Layout3.Visible := not Layout3.Visible;
  finally
    FlowLayout1.EndUpdate;
  end;
end;

请显示您尝试过的内容(因为注释掉的行是可以的)。例如,你到底想重新粉刷什么?非常感谢你,汤姆。我尝试了很多方法来更新视觉效果,但没有一个奏效。我真的很感激。