gpt4 book ai didi

delphi - 如何在滚动框上使用滚动条?

转载 作者:行者123 更新时间:2023-12-03 19:45:31 26 4
gpt4 key购买 nike

我必须在滚动框的 TScrollBox 上使用 TScrollbar(是的,这似乎是个坏主意,但我必须这样做)。

这就是我所做的:我在盒子上添加了滚动条,使用顶部和底部 anchor 使其保持在轨道上,并在 ScrollBar 的 OnScroll 事件中添加了以下代码:

procedure TForm1.ScrollBar1Scroll(Sender: TObject; 
ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
ScrollBox1.ScrollBy(0,-scrollPos);
end;

它不能正常工作。总是向下滚动。如何让它正常滚动?

编辑 : 请不要建议使用 TScrollBox 中的栏,我必须使用 TScrollBar。

谢谢!

最佳答案

问题是您为 ScrollBox 提供了 ScrollBar 的绝对滚动位置,其中预期的参数是“delta”或 更改就位

这是一个快速而简单的演示解决方案。根据您的需要,您可以通过创建不同的后代等来使这个更清洁。

放入 ScrollBox 和 ScrollBar 后,在 interface 中的表单类型声明上方添加此类型声明部分:

type
TScrollBar = class(StdCtrls.TScrollBar)
private
OldPos : integer;
end;

现在将此用于 ScrollBar 的 OnScroll 事件:
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
var
Delta : integer;
begin
Delta := ScrollPos - ScrollBar1.OldPos;
ScrollBox1.ScrollBy(0, -Delta);
ScrollBar1.OldPos := ScrollPos;
end;

这对我有用(WinXP下的D2006)。

关于delphi - 如何在滚动框上使用滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1269799/

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