问题标签 [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 ( Align := alClient
) 和一些控件放在 TScrollBox 上的简单大小的表单。如果用户更改表单大小,TScrollBox 显示和隐藏 HorzScrollBar 和 VertScrollBar(取决于实际客户端表单大小)。
如何在运行时检查 - HorzScrollBar 或 VertScrollBar 现在是否可见?
TControlScrollBar.Visible
不是答案,因为它仅具有调节功能。
delphi - 如何让滚动框中的控件不进入焦点?
我有一个TScrollBox
垂直滚动,水平滚动条被禁用。在这个滚动框内,有一个与顶部对齐的大面板,其高度是根据其内容动态计算的。它的内容是两个面板,一个向左对齐,另一个对齐客户端,中间有一个拆分器。在这两个面板中的每一个内部,都有一系列与顶部对齐的用户选择的面板,它们也可以动态调整大小,从而扩展/减少滚动框中主面板的高度。
同时,这些较小的内容子面板中的大多数还具有接收焦点的控件,并且需要允许获得焦点。目前滚动一切正常。
当用户单击滚动框中的此类可聚焦控件之一时,就会出现问题。如果该控件碰巧被部分隐藏(控件的顶部延伸到滚动位置的顶部上方),则整个滚动框会向上跳转以将该控件定位在滚动框的顶部。
这似乎是一个“功能”,但我想禁用一个功能。在这种情况下很烦人。当其中一个孩子获得焦点时,如何防止滚动框跳跃位置?
delphi - 如果父级是滚动框,则在 firemonkey 中获取空父级名称
如果父级是滚动框,我如何获取父级名称。以下示例返回空:
delphi - 如果局部变量仅用作表单控件的指针,我是否需要“创建”/初始化它们?
我有一个同步滚动框的简单示例,在其中我通过单选按钮控制哪一侧同步 - 同步左侧或右侧。当我编译时,我得到编译器消息:
[dcc32 警告] Unit1.pas(51): W1036 变量“ScrlBox1”可能尚未初始化
[dcc32 警告] Unit1.pas(51): W1036 变量“ScrlBox2”可能尚未初始化
这是一个简单的例子:
这里有什么问题?
如果我在开头添加此消息,则消息消失:
但我不认为创建滚动框变量是必要的,对吧?这些只是表单控件的变量指针。
delphi - 如何保持标签在滚动框中平稳居中?
我使用TMemo
inTScrollBox
来显示一些文本,并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 bars
或scroll bars
直接 on Form
。这确实得到了预期的效果,但它增加了一些不便,Labels
不再是 , 的一部分Scrollbox
。
delphi - TScrollBox,Delphi中组件的两列
我想要类似于附加场景的东西,用户可以在其中拖放 UI 组件(TImage)运行时(不是来自工具面板)。我们一直使用TScrollBox
到现在。但是,我无法将它分成两部分以容纳附加结构。
我们可以连续拥有第二个组件,但它是可选的。此外,这两个组件(按行)应该同步滚动。
我正在考虑添加两个 TScrollBox 并使用以下代码来同步垂直滚动条: How to track scrolling of TScrollBox in Delphi
但是,我找不到“Scrollbox1.VertScrollBar.Position”属性。
delphi - 删除 TScrollBox 中的图像后如何重置滚动?
我有一个带有 TScrollBox 和一些 TImage 组件的 Delphi 表单,并且表单的滚动框在清空时不会重置......每次在框中抛出新图像时它似乎都在增长。
我想在删除图像后,在加载下一个图像之前将滚动范围/大小重置为滚动框大小。有没有办法做到这一点?
我尝试将滚动条设置为不可见,并在下一个文件加载后重新打开它们,但这似乎不起作用。非常感谢任何帮助。
根本原因:因此,当位图被释放时,图像似乎将其左上角移动到图像在 TScrollBox 中所在位置的中心。
delphi - 停止并恢复 TScrollBox 中的更新?
由于Vcl.Forms.TScrollBox
没有BeginUpdate
/EndUpdate
方法,我使用此代码来减少在作为容器子级的查看器中加载文档时的闪烁TScrollBox
:
这很好用,除非在应用程序可重现崩溃的极少数情况下MyLockWinControl(ScrollBox, False);
所以我的问题是: 中是否存在错误MyLockWinControl
,或者是否有更好的方法来停止和恢复更新TScrollBox
?
delphi - Delphi - 在 TScrollBox 中渲染 TPanel 后代问题(32K 像素限制)
我是新来的,希望我遵循正确的协议并正确地提出问题。我在这里单独发布这个问题,因为我没有适当的权限对下面列出/链接的原始问题发表评论。
我遇到了这个问题(X 个组件后的 Delphi - TScrollBox 问题)并尝试实现@ngln 建议的第一个解决方案(滚动滚动框)。
我一定做错了什么,因为我的解决方案实施似乎不起作用。非常感谢对此的一些指导。
我有一个自定义面板(TEntryPanel),它派生自 TPanel - 并包含其中的其他元素,这些元素使用来自 TEntry 的数据进行设置(它只是从包含数据的 TObject 派生的自定义类)。EntryList 是一个包含 TEntry 对象列表的对象。
这是我实现它的方式:
运行此代码后,我仍然遇到未显示所有面板的问题。有人可以让我知道我做错了什么吗?我正在使用 Delphi 10.1 Berlin。提前谢谢了。