Delphi中的THeaderControl有何用处?

9
我一直在为我的网站LearnDelphi.tv制作有关Delphi组件的视频。我想涵盖THeaderControl,但找不到任何用途 - 这个组件现在是否不再需要,被其他组件(如具有报告视图样式的TListView)超越了,还是我忽略了某些使用方法?
编辑: 我为我的商业视频录制了一个关于THeaderControl的片段,但我已决定免费发布这个小部分(6小时中的20分钟)。 在YouTube上观看。 感谢所有做出贡献的人。

1
以前在普通选项卡列表的标题上使用它是不错的,但现在确实使用较少。不确定这是否是一个好地方来问这样的问题。(我没有投反对票!) - mj2008
1
@TLama,我已经查看了帮助文档,并进行了相当合理的谷歌搜索。一个关于TListBox标题的示例一直在弹出,但实现起来相当麻烦,而使用TListView则更容易。我想知道是否有人正在使用它来做一些有用的事情。 - Alister
1
我不理解这个问题。你似乎在寻找使用标题控件的原因。你是否对列表视图控件有具体的问题? - David Heffernan
2
@DavidHeffernan 在制作关于 Delphi 的视频,他在思考是否值得花时间去学习 THeaderControl。就这些。 - Chris Thornton
4
@Chris 啊哈,现在我明白了。我认为 THeaderControl 不是很主流。 - David Heffernan
2
我只是在两天前遇到了这种情况:用TListView替换TListBox+THeaderControl。许多旧的调整大小代码都被丢进了垃圾箱;-) - Jan Doggen
1个回答

11

一般来说:THeaderControl 可以用作表格数据的标题。当然,通常情况下会使用列表视图。但是对于每列中不同组件的异形布局(使用列表视图或类似工具难以创建)或者每列需要完全不同的布局,THeaderControl 可以提供更多的灵活性。就像比 TTabControl 更加灵活的 TPageControl 一样。

关于特定的应用场景:例如,我将头部控件用作计划网格组件的一部分。头部控件通过数据源获取标题,并且与列和滚动条同步。确实,这需要一些代码,但不比在设计时实现不同事件时需要的代码多:

  TPlanGridHeader = class(TCustomHeaderControl)
  private
    FSectionWidth: Integer;
    procedure SetSectionWidth(Value: Integer);
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
  protected
    function CreateSection: THeaderSection; override;
    procedure SectionResize(Section: THeaderSection); override;
    procedure SectionTrack(Section: THeaderSection; Width: Integer;
      State: TSectionTrackState); override;
    property SectionWidth: Integer read FSectionWidth write SetSectionWidth;
  public
    procedure AddSection(const AText, AHint: String);
    constructor Create(AOwner: TComponent); override;
  end;

在这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接