gpt4 book ai didi

delphi - 为什么我的 TScrollBox 不显示滚动条?

转载 作者:行者123 更新时间:2023-12-03 14:46:19 30 4
gpt4 key购买 nike

这似乎是一个非常简单的问题,但我无法让滚动框显示滚动条,这让我发疯。

情况是这样的。我需要在表单的一部分中显示可变数量的帧。显示这些框架的区域可以通过 TSplitter 或通过调整表单大小来调整大小。

创建表单时,我会根据数据库中的记录动态生成框架。该框架的父级是 FlowPanel,它负责框架的放置。 FlowPanel 位于 ScrollBox 中。

由于 FlowPanel,当用户使用 TSplitter 或调整表单大小时,框架可能会自行重新对齐。如果任何框架重新定位到表单 View 之外,我希望 ScrollBox 显示滚动条,以便用户可以向下滚动到那些无法访问的框架。这不会发生。位于滚动框尺寸之外的流程面板区域中的那些框架是不可访问的。

我已经使用滚动框中的简单对象构建了一些测试,并且如果滚动框包含的任何对象出现在滚动框的尺寸之外,则滚动框会正确放置滚动条。

流程面板是否与 clClient(滚动框)对齐或锚定到滚动框的侧面,或者都不是,都没有关系。

我意识到我可以使用 TPanel,并通过面板的 OnResize 事件处理程序在代码中执行框架的放置和重新定位,但这就是 FlowPanel 的用途。

这是怎么回事?我摆弄了许多不同的滚动框属性,但仍然无法让它工作。这是什么问题,有解决办法吗?

<小时/>

好的。我选择 Ewe 的答案是正确的,但完成这项工作的技巧在于他的一条评论中,我对结果仍然不完全满意。

这是独家新闻。我确实按照 Ewe 建议的方式配置了 ScrollBox 和 FlowPanel,但尝试了许多其他设置,因为该配置不起作用。我非常确定这是由于表单用户界面的复杂性造成的,其中面板中有许多面板、许多拆分器,并且表单本身的父级为 PageControl 的 TabSheet(我忽略了这一事实,因为将表单作为支架进行测试)单独的形式产生相同的结果)。

让它发挥作用的原因是 Ewe 建议再次关闭和打开 FlowPanel 的 AutoWrap,尽管这种方式很笨拙。我将以下代码添加到 ScrollBox 的 OnResize 事件处理程序中:

procedure TCurrentJobsForm.ScrollBox1Resize(Sender: TObject);
begin
Flowpanel1.Autowrap := False;
FlowPanel1.AutoWrap := True;
end;

调整大小时有明显的闪烁,但我可以忍受,因为它会产生所需的结果。一旦用户调整了表单的大小,它将始终使用这些尺寸重新创建,因此调整大小是用户很少执行的操作。

最佳答案

当包含的控件超出可见矩形时,ScrollBox 才会显示滚动条。由于滚动框中唯一的控件是流程面板,因此它无助于客户端在滚动框中对齐流程面板。这将始终使流程面板等于滚动框的大小,因此不需要滚动。

如果你想要垂直滚动,使 flowpanel 顶部对齐并自动调整大小。当内部放置更多框架时,这应该会使 Flowpanel 高度更大。

以防万一:检查垂直滚动条的 Visible 属性是否设置为 true。

关于delphi - 为什么我的 TScrollBox 不显示滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036694/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com