问题标签 [tscrollbox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 如何使滚动条显示在 TScrollBox 上?
TScrollBox 控件看起来应该基本上是一个 TPanel,其底部和右边缘附有滚动条。我尝试在表单上放置一个,但无论我做什么,我都无法让滚动条真正出现,无论是在设计时还是在运行时。有谁知道如何让他们出现?
delphi - 再次可见后如何在 TScrollBox 中显示滚动条?
我遇到了一个小问题。我正在动态生成一些控件并将它们放在一个TScrollbox
组件上。但我注意到,如果滚动框可见,用户可以清楚地看到正在创建和放置的每个控件。所以看起来有很多工作正在完成,而且速度很慢。
我隐藏了滚动框并在其上生成了所有控件,这花费了更少的时间并且没有闪烁等。但这就是问题所在。当我再次显示滚动框时,它的滚动条在我实际调整表单大小之前不会出现。(滚动框的对齐方式是alClient
)
有想法该怎么解决这个吗?
尝试重新粉刷,但没有成功。刷新也没有用。
谢谢
编辑:
上面的代码显示了我如何隐藏和显示滚动框。
fNaujasTermas
生成一个包含多个轨迹栏、图像和编辑的面板。
我不确定可能会有什么分步解释。只需创建一个过程,它将生成一些带有许多控件的面板并将 ScrollBox 设置为父级。在生成任何内容之前隐藏滚动框并在完成后取消隐藏它。
哦顺便说一句,面板是对齐的alTop
。因此,每次创建新面板并将其放入滚动框时,它都会出现在顶部,而所有其他面板都会向下移动。
这就是我创建滚动框本身的方式
EDIT2:我想我知道如何重现这个。
似乎在向滚动框添加新面板时,它不会将其计入该滚动框中已经存在的所有控件的总高度。
所以举个例子。假设 1 个面板的高度为 200 像素。
滚动框高度为 300 像素。
因此,在创建 2 个总高度为 400px 的面板后,滚动框不会显示滚动条,即使第二个面板的一半不可见。如果我再添加一个面板 = 总共 600 像素,滚动框将显示滚动条,看起来它只会滚动每 2 个面板,而不是 3 个。当尝试滚动这样的窗口时,值会重新计算并且一切都很好地显示。
所以主要问题是,如何让滚动框“及时”显示滚动条,这样面板就不会被切掉一半?
delphi - 如何在按钮单击时将组件动态添加到另一个下方?
我创建了一个 TScrollBox。我在按钮单击时动态添加了标签和编辑框。为了设置组件的位置,我使用了组件的 height,width,left,top 属性。但是当添加了 5 个组件后,滚动条出现在屏幕上时,下一个组件的位置就会受到干扰。并且下一个组件不会以同步的方式放置在 ScrollBox 上。
delphi - 如何从 Delphi 的 TScrollBox 中获取选定的表单?
我正在动态地在滚动框中创建一些表单。
当我单击创建的表单时,我想获取一些存储在该特定表单中的值到父表单。这可能吗?如果是这样,我该怎么做?
我希望这听起来不会令人困惑。这是我正在做的事情的屏幕截图。
delphi - 在 TScrollBox 中的固定位置保留位图
我在 TScrollBox 上放置了各种框架。滚动时,它们正在正确滚动。现在我想添加一个保持在固定位置的位图。我尝试了一个与 TScrollBox 具有相同父级(TPanel)的 TImage。即使使用 BringToFront,我也看不到分配给 TImage 的位图。
有人可以帮帮我吗?
提前致谢,
阿诺德
delphi - 为什么我的 TScrollBox 不显示滚动条?
这似乎是一个非常简单的问题,但我无法让滚动框显示滚动条,这让我发疯。
这是情况。我需要在表单的一部分中显示可变数量的帧。可以通过 TSplitter 或通过调整窗体大小来调整显示这些帧的区域的大小。
创建表单时,我正在根据数据库中的记录动态生成框架。此框架是 FlowPanel 的父级,FlowPanel 负责放置框架。FlowPanel 位于 ScrollBox 中。
由于 FlowPanel,当用户使用 TSplitter 或调整表单大小时,框架可能会重新对齐。如果任何框架重新定位到表单视图之外,我希望 ScrollBox 显示滚动条,以便用户可以向下滚动到那些无法访问的框架。这不会发生。无法访问位于滚动框尺寸之外的流程面板区域中的那些框架。
我用滚动框中的简单对象构建了一些测试,如果滚动框包含的任何对象出现在滚动框的尺寸之外,滚动框就会正确放置滚动条。
流面板是否与 clClient(滚动框)对齐或锚定到滚动框的侧面,或者这些都没有,都没有关系。
我意识到我可以改用 TPanel,并在面板的 OnResize 事件处理程序的代码中执行框架的放置和重新定位,但这就是 FlowPanel 的用途。
这里发生了什么?我摆弄了许多不同的滚动框属性,但仍然无法让它工作。有什么问题,有解决办法吗?
好的。我选择 Ewe 的答案是正确的,但完成这项工作的诀窍在于他的评论之一,我仍然对结果不完全满意。
这是独家新闻。我确实按照 Ewe 建议的方式配置了 ScrollBox 和 FlowPanel,但由于该配置不起作用,我尝试了许多其他设置。我很确定这是由于表单的用户界面的复杂性,它在面板中有许多面板,许多拆分器,并且表单本身是 PageControl 的 TabSheet 的父级(我省略了这个事实,因为测试表单作为一个支架单独的形式产生相同的结果)。
是什么使它工作,尽管以一种笨重的方式,是 Ewe 建议关闭并再次打开 FlowPanel 的 AutoWrap。我在 ScrollBox 的 OnResize 事件处理程序中添加了以下代码:
调整大小时会出现明显的闪烁,但我可以忍受,因为它会产生所需的结果。一旦用户调整表单大小,它总是会使用这些尺寸重新创建,因此调整大小是用户很少会做的事情。
delphi - 如果 Scrollbar.visible := False,如何通过 .Perform() 或 SendMessage 滚动 Scrollbox?
我观察到,当您隐藏水平滚动条时,使用
sbxStudyBtnHolder.Perform(WM_HSCROLL, SB_LINEDOWN, 0);
我们怎样才能使它成为可能?
delphi - TScrollbox MouseDown 覆盖
我创建了一个从 TScrollbox 派生的自定义滚动框,它的工作原理相同,除了在客户端区域中拖动时它会滚动,而不是滚动条。
我现在的问题是当鼠标位于 CustomScrollbox 内的按钮或面板上时,我无法拖动到滚动。
MouseDown、MouseUp、MouseMove 覆盖不会触发,因为它悬停在不同的控件中。
当我开始拖动时,如何继续跟踪 MouseDown、MouseUp、MouseMove 并防止 Button/Panels 事件触发(在我的 CustomScrollbox 内)?
delphi - 使用 TScrollBox 包含 TExpander 组件
好吧,我有一个与表单左侧对齐的滚动框,在滚动框中我有与顶部对齐的 TExpander 组件,此扩展器超出了滚动框的区域,所以我猜滚动条必须是可见的,但它们不是。我认为问题在于 Texpanders 顶部的对齐方式,因为如果我更改 Texpander 的对齐方式,则超出滚动框的边距以 alNone 滚动条出现,但我需要将 Texpander 对齐在顶部,因为他的尺寸恒定变化。有任何想法吗?非常感谢!
c++ - C++ builder滚动框组件响应鼠标滚轮
我一直在寻找使鼠标滚轮与滚动框组件一起使用的选项,到目前为止我得到了这个
到目前为止,它可以工作,但滚动速度非常慢。有什么方法可以让它滚动得更快,或者在 c++ builder 中处理滚动的更好方法吗?