【问题标题】:Is there a delphi ScrollInView equivalent in Free Pascal?Free Pascal 中是否有等效的 delphi ScrollInView?
【发布时间】:2015-10-31 07:07:31
【问题描述】:

我有一个 ScrollBox,我在运行时向它添加控件。但是,当控件超过 ScrollBox 高度时,我希望 ScrollBox 一直滚动到底部,以便新添加的控件可见。

做一些研究,我发现了一个名为“ScrollInView”的delphi。看到 Free Pascal 中有多少(相当多)Delphi 方法/函数可用,你知道有什么与这个特定的等效吗?如果没有,你能用不同的解决方案帮助我实现我的目标(将 ScrollBox 自动滚动到底部)吗?

提前致谢,

奥斯卡

【问题讨论】:

    标签: freepascal


    【解决方案1】:

    这样的?

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        with TEdit.Create(Self) do
        begin
            Parent := ScrollBox1;
            Left := 10;
            Top := ScrollBox1.ControlCount * 40;
            ScrollBox1.VertScrollBar.Position := Top;
        end;
    end;
    

    这里是ScrollInView 方法的简单实现:

    TScrollBoxHelper = class helper for TScrollBox
        procedure ScrollInView(AControl: TControl);
    end;
    
    implementation
    
    procedure TScrollBoxHelper.ScrollInView(AControl: TControl);
    begin
        if AControl.Parent = Self then
        begin
            Self.VertScrollBar.Position := AControl.Top;
            Self.HorzScrollBar.Position := AControl.Left;
        end;
    end;
    

    用法:

    procedure TForm1.Button2Click(Sender: TObject);
    begin
        ScrollBox1.ScrollInView(ScrollBox1.Controls[3]);
    end;
    

    【讨论】:

    • 感谢您的指导, ScrollBox1.VertScrollBar.Position:= ScrollBox1.ControlCount *40 成功了 ^_^ 。这是我从 Abelisto 那里得到的 2 个答案,下次我会确保在询问之前给你发消息 :p 。非常感谢!
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2010-10-04
    相关资源
    最近更新 更多