加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 为什么我的TScrollBox没有显示滚动条?

发布时间:2020-12-15 04:17:15 所属栏目:大数据 来源:网络整理
导读:这似乎是一个非常简单的问题,但我无法使用滚动条来显示滚动条,这让我发疯. 情况就是这样.我需要在表单的一部分中显示可变数量的帧.可以通过TSplitter或通过调整表单大小来调整显示这些帧的区域. 我在创建表单时根据数据库中的记录动态生成帧.这些框架是FlowP
这似乎是一个非常简单的问题,但我无法使用滚动条来显示滚动条,这让我发疯.

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

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

由于FlowPanel,当用户使用TSplitter或调整表单大小时,帧可能会重新对齐.如果任何框架重新定位在窗体的视图之外,我希望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等于滚动框的大小,因此不需要滚动.

如果你想要f.i.垂直滚动,使流动面板顶部对齐并自动调整大小.当更多的框架放在里面时,这应该使流动板的高度更大.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读