【问题标题】:How can I scroll the content of a TFlowPanel?如何滚动 TFlowPanel 的内容?
【发布时间】:2011-03-16 07:19:00
【问题描述】:

TFlowPanel 控件的 Delphi 实现似乎缺少 C# 版本的一个重要特性,AutoScroll 之一。

带有AutoWrap= FalseAutoScroll=True 的C# 控件的行为类似于一个水平的可滚动 控件列表。

如何模仿 C# 版本的控件的行为?

谢谢, 阿林

附: 我知道我可以使用TScrollBox 来获得这种行为,但TFlowPanel(在非残缺版本中)允许更大的灵活性。

【问题讨论】:

  • 您是否尝试过在 TScrollBox 中嵌入 TFlowPanel?

标签: delphi delphi-2010 vcl


【解决方案1】:

对于正在寻找有效的垂直滚动方法的人:

procedure TfrmSample.FixVerticalScroll(const AFloatPanel: TFloatPanel);
begin
  fFloatPanel.Align := alTop;
  fFloatPanel.AutoSize := True;
  fFloatPanel.AutoWrap := True;
  fFloatPanel.OnResize := OnFlowPanelResize;
end;

procedure TfrmSample.OnFlowPanelResize(Sender: TObject);
begin
  // Fix: otherwise panel is not operating on the full width
  fFloatPanel.Align := alClient;
  fFloatPanel.Align := alTop;
end;

【讨论】:

    【解决方案2】:

    如果要垂直滚动设置

    FlowPanel1.Align := alTop;
    FlowPanel1.AutoSize := True;
    FlowPanel1.AUtoWrap := False;
    

    【讨论】:

    • 此设置无效。我正在使用德尔福 XE5。水平和垂直滚动设置也不起作用。
    • 抱歉,我只有 XE4
    【解决方案3】:

    TScrollBox 中创建您的 TFlowPanel,并具有以下属性:

    • 对齐:alLeft
    • 自动尺寸:是的
    • 自动换行:错误

    这应该会让你得到我认为的行为。

    【讨论】:

    • 是的,这就是我想要的行为 ...
    • 它可以 - 您可以从 TScrollbar 派生一个新控件,该控件包含您需要的 TFlowPanel 行为部分,而无需任何您不需要的可选附加功能。如果您需要大量重用它,那么在创建这样一个控件上投入的时间可能会得到很好的回报,但如果不是这样,那么这种“混搭”是完美的,并且基于组件的开发擅长什么 - 创建比各部分的总和更[实用]的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多