【问题标题】:How to add scrollbars to a TComponent?如何将滚动条添加到 TComponent?
【发布时间】:2011-01-12 08:16:23
【问题描述】:

我正在使用从 TComponent 继承的第 3 方控件,我希望它具有滚动条,最好是自动滚动条。

我可以从 TComponent 获取它们吗?

如果做不到这一点,我可以在我的主窗体和组件上放置一个 TPanel 并获得滚动条吗?我打算让组件(和面板,或其他)成为 alClient,以便它们在我的组件调整大小时自动调整大小,但我也希望它们具有(自动)滚动条。

【问题讨论】:

    标签: delphi c++builder vcl


    【解决方案1】:

    如果我理解您的意图,请执行以下操作:

    • 在窗体上添加一个 TScrollBox
    • 在 TScrollBox 组件上添加 visual 组件
    • 不用担心滚动条,因为它们会在需要时自动显示(当组件超出可见区域时)
    • 玩得开心!

    【讨论】:

    • +1 谢谢,多林。我确信这是要走的路。它目前无法正常工作,但我会进一步研究并希望能深入了解它
    • 嗯,可能无法正常工作,因为我的“控件”是我放置在另一个表单上的表单(以及其他一些控件)?
    • 我不这么认为......在我的一个项目中,我在多个表等上创建了一个自定义“数据库搜索”,用户创建条件的方式是搜索表单我有一个滚动框,在滚动框上我添加了组合框、查找组合框等(动态)我看不出为什么表单会以任何不同的方式做出反应。不要将辅助表单与“alClient”对齐,将其添加到 Left = 0, Top = 0 以便当父表单缩小时,子表单将保持其大小,但是如果需要显示整个滚动条,则会出现滚动条子窗体的内容。
    • 请忽略最后一条评论 - 它不是 TForm
    • 不用担心,同样适用于其他控件,将其添加到滚动框的正常大小,如果它的宽度、高度或两者都大于滚动框(应与客户端对齐),则滚动框会满足您的需求,而且它比做一些“肮脏”的事情要干净得多,这可能(可能不会......)让你以后遇到问题......只是我的两分钱。
    【解决方案2】:

    对于视觉控件,您通常来自 TControl 或(更好的)TWinControl。 TWinControl 是 Windows 控件(小部件)的包装器,Windows 可以为内容提供滚动条。您可能希望查看 TScrollbox 源代码作为指南或替代您的 TPanel 想法。

    【讨论】:

    • +1 花时间回答。不幸的是,它是第 3 方控件,所以我只需要忍受我所拥有的(因此我想将它作为一个孩子添加一些我可以控制的东西并使其成为 alCLient。
    • @Leonix你不能得到这个组件的来源吗?
    • @Leonix 甚至第三方控件通常是从 TWinControl 或 TForm (它是 TWinControl 的后代)的后代。但是,从您的 cmets 中,我看到您错误地制定了您的需求。您不需要添加滚动条来控制,但希望将更大的控件适应有限的查看空间。所以只要把控件放到 TScrollBox 上。
    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 2015-06-03
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多