delphi - FireMonkey FlowLayout 不刷新基于可见属性的项目
问题描述
你好吗?希望你做得很好。我的问题:我有一个 FlowLayout 里面有很多布局,我需要根据单选按钮选择隐藏一些,在设计时它工作正常我将可见属性设置为 false 并且所有其他布局重新对齐正确方式,但是当我在运行时这样做时它不起作用,它会在已隐藏的布局和下一个布局之间保持空白。当我手动调整大小(转到表单边框并稍微拖动)时,它会重新对齐并正确,但如果我选择另一个收音机,布局会恢复并覆盖另一个布局,所以我需要再次手动调整大小以重新对齐。我试图查看 Resize 的源代码,但没有任何相关信息。我尝试过:重绘、重新对齐、InvalidateRect、RecalcAbsolute。有什么方法可以强制刷新组件吗?
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;
这是一个简单的代码,但它给了我一个小问题。感谢您的帮助,如果您需要更多代码或更多详细信息,请告诉我。
解决方案
TFlowLayout
您必须用一对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;
推荐阅读
- firebase - 如何以只读模式查询firebase
- python - 如何检测这些基于矩形的对象的碰撞?
- python - 如何导入 fernet?
- sql - Postgre 等效于 MSSQL 外部应用
- javascript - 如何从“ajax 成功”返回承诺?
- regex - 正则表达式,如何忽略数字的句点?
- python-3.x - 为什么从 mpi4py 导入 MPI 会中断对 mpiexec 的子进程调用?
- python - 通过将某些列转换为行来重塑 pandas 数据框
- javascript - 在nodejs中保存从url保存的图像时出现问题
- sql - 仅在列值相等时加入条件,否则不同的加入条件