问题标签 [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.

0 投票
1 回答
1909 浏览

delphi - 检查 TScrollBox 滚动条是否实际可见

我有一个带有 TScrollBox ( Align := alClient) 和一些控件放在 TScrollBox 上的简单大小的表单。如果用户更改表单大小,TScrollBox 显示和隐藏 HorzScrollBar 和 VertScrollBar(取决于实际客户端表单大小)。

如何在运行时检查 - HorzScrollBar 或 VertScrollBar 现在是否可见?

TControlScrollBar.Visible不是答案,因为它仅具有调节功能。

0 投票
1 回答
1335 浏览

delphi - 如何让滚动框中的控件不进入焦点?

我有一个TScrollBox垂直滚动,水平滚动条被禁用。在这个滚动框内,有一个与顶部对齐的大面板,其高度是根据其内容动态计算的。它的内容是两个面板,一个向左对齐,另一个对齐客户端,中间有一个拆分器。在这两个面板中的每一个内部,都有一系列与顶部对齐的用户选择的面板,它们也可以动态调整大小,从而扩展/减少滚动框中主面板的高度。

同时,这些较小的内容子面板中的大多数还具有接收焦点的控件,并且需要允许获得焦点。目前滚动一切正常。

当用户单击滚动框中的此类可聚焦控件之一时,就会出现问题。如果该控件碰巧被部分隐藏(控件的顶部延伸到滚动位置的顶部上方),则整个滚动框会向上跳转以将该控件定位在滚动框的顶部。

这似乎是一个“功能”,但我想禁用一个功能。在这种情况下很烦人。当其中一个孩子获得焦点时,如何防止滚动框跳跃位置?

0 投票
1 回答
133 浏览

delphi - 如果父级是滚动框,则在 firemonkey 中获取空父级名称

如果父级是滚动框,我如何获取父级名称。以下示例返回空:

0 投票
1 回答
117 浏览

delphi - 如果局部变量仅用作表单控件的指针,我是否需要“创建”/初始化它们?

我有一个同步滚动框的简单示例,在其中我通过单选按钮控制哪一侧同步 - 同步左侧或右侧。当我编译时,我得到编译器消息:

[dcc32 警告] Unit1.pas(51): W1036 变量“ScrlBox1”可能尚未初始化

[dcc32 警告] Unit1.pas(51): W1036 变量“ScrlBox2”可能尚未初始化

这是一个简单的例子:

这里有什么问题?

如果我在开头添加此消息,则消息消失:

但我不认为创建滚动框变量是必要的,对吧?这些只是表单控件的变量指针。

0 投票
3 回答
1465 浏览

delphi - 如何保持标签在滚动框中平稳居中?

我使用TMemoinTScrollBox来显示一些文本,并TLabel在顶部使用 a 作为标题信息。有时备忘录比滚动框更宽,当然Horizontal scroll bar可以用来左右滚动以查看备忘录中的文本。我希望将标签作为标题始终以滚动框可见区域为中心。我可以通过设置来做到这一点Label1.Left:= (Scrollbox1.Width div 2) - (Label1.Width div 2);,它可以工作,但它有点闪烁,来回滚动时会摇晃。备忘录移动顺利,标签没有。

在此处输入图像描述

这里是单位:

和 dfm:

我尝试使用DoubleBuffered但没有帮助。

有什么建议可以让 Label1 在不闪烁/抖动的情况下移动,就像 Memo1 在滚动时一样平滑?


编辑:

设计最终将是我在表单上有 3 个或滚动框,每个包含最多 3 个带有标题的备忘录。并且滚动需要通过滚动框进行,因为同一滚动框中的所有备忘录都需要同时滚动。这意味着我看不到如何将标签放在表单或面板上,然后放在表单上,​​在滚动框之外:

在此处输入图像描述


编辑2:

下面的答案确实提供了很好的解决方案,但它们确实有必要将Labels居中的 ,放在 之外Scrollbox并放在Form自身上。然后移动 byScrollbox's scroll barsscroll bars直接 on Form。这确实得到了预期的效果,但它增加了一些不便,Labels不再是 , 的一部分Scrollbox

0 投票
1 回答
296 浏览

delphi - TScrollBox,Delphi中组件的两列

我想要类似于附加场景的东西,用户可以在其中拖放 UI 组件(TImage)运行时(不是来自工具面板)。我们一直使用TScrollBox到现在。但是,我无法将它分成两部分以容纳附加结构。

组件布局

我们可以连续拥有第二个组件,但它是可选的。此外,这两个组件(按行)应该同步滚动。

我正在考虑添加两个 TScrollBox 并使用以下代码来同步垂直滚动条: How to track scrolling of TScrollBox in Delphi

但是,我找不到“Scrollbox1.VertScrollBar.Position”属性。

0 投票
2 回答
2483 浏览

delphi - 如何检测滚动条是否在最底部?

很容易检测 a 的垂直滚动条是否TScrollBox在最顶部:

在此处输入图像描述

但是如何检测 a 的垂直滚动条是否TScrollBox位于最底部?

在此处输入图像描述

0 投票
2 回答
827 浏览

delphi - 删除 TScrollBox 中的图像后如何重置滚动?

我有一个带有 TScrollBox 和一些 TImage 组件的 Delphi 表单,并且表单的滚动框在清空时不会重置......每次在框中抛出新图像时它似乎都在增长。

我想在删除图像后,在加载下一个图像之前将滚动范围/大小重置为滚动框大小。有没有办法做到这一点?

我尝试将滚动条设置为不可见,并在下一个文件加载后重新打开它们,但这似乎不起作用。非常感谢任何帮助。

根本原因:因此,当位图被释放时,图像似乎将其左上角移动到图像在 TScrollBox 中所在位置的中心。

0 投票
2 回答
866 浏览

delphi - 停止并恢复 TScrollBox 中的更新?

由于Vcl.Forms.TScrollBox没有BeginUpdate/EndUpdate方法,我使用此代码来减少在作为容器子级的查看器中加载文档时的闪烁TScrollBox

这很好用,除非在应用程序可重现崩溃的极少数情况下MyLockWinControl(ScrollBox, False);

所以我的问题是: 中是否存在错误MyLockWinControl,或者是否有更好的方法来停止和恢复更新TScrollBox

0 投票
0 回答
218 浏览

delphi - Delphi - 在 TScrollBox 中渲染 TPanel 后代问题(32K 像素限制)

我是新来的,希望我遵循正确的协议并正确地提出问题。我在这里单独发布这个问题,因为我没有适当的权限对下面列出/链接的原始问题发表评论。

我遇到了这个问题X 个组件后的 Delphi - TScrollBox 问题)并尝试实现@ngln 建议的第一个解决方案(滚动滚动框)。

我一定做错了什么,因为我的解决方案实施似乎不起作用。非常感谢对此的一些指导。

我有一个自定义面板(TEntryPanel),它派生自 TPanel - 并包含其中的其他元素,这些元素使用来自 TEntry 的数据进行设置(它只是从包含数据的 TObject 派生的自定义类)。EntryList 是一个包含 TEntry 对象列表的对象。

这是我实现它的方式:

运行此代码后,我仍然遇到未显示所有面板的问题。有人可以让我知道我做错了什么吗?我正在使用 Delphi 10.1 Berlin。提前谢谢了。