THeaderControl

[delphi组件] THeaderControl 提供了一系列可改变尺寸的列

表头组件(THeaderControl)THeaderControl组件提供了一系列可改变尺寸的列,一般与列表框配合使用,用于把列表框中的信息归类。该组件可以分成几节,用户可以使用光标调整节的宽度或者把节拖到另一个位置,拖动时
将触发节拖动事件(OnSectionTrack)。THeaderControl组件提供了标准的头元素,程序运行时操作表头并不会影响它下面的组件。比如,当表头改变尺寸时,它下面组件的列也应该随之改变,此时,开发者必须响应
THeaderControl组件的尺寸改变事件(OnSetionResize),通过编写代码才能达到这一目的。

THeaderControl组件具体用法的介绍如下。

1.THeaderControl组件的重要属性

Canvas----------------返回整个表头组件的画布
FullDrag--------------当用户拖动表头的节时,表头将刷新
DragReorder-----------允许用户通过拖放操作来改变节的顺序
HotTrack--------------当光标指向表头的某节时,该节的标签将突出显示
Images----------------用于指定一个图像列表
Sections--------------可以访问表头组件中所有的节
Style-----------------用于设置表头组件的风格

(1)Images属性
用于指定一个图像列表,其中的图像将显示在节的标签旁边。每个节(THeadSection对象)通过它的ImageIndex属性指定一个图像。

(2)Sections属性
此属性可以访问表头组件中所有的节。例如要在运行期动态地增加一节,程序示例代码如下:

var
MyHeadSection:TheadSection
begin
HeaderControl1.Section1.Items.Clear;
MyHeadSection:=HeaderControl1.Sections.Items.Add;
HeaderControl1.Sections.Items[0].Text:=MySection;
HeaderControl1.Sections.Items[0].Width:=100
end;

(3)Style属性
此属性用于设置表头组件风格,默认值是hsButtons。若设为hsFlat,表头的节(按钮)是平坦的。
它有如下两个用户可选值。
. hsFlat:表头的节是平坦风格的
. hsButton:表头的节是按钮风格的

2.THeaderControl组件的重要事件

OnDrawSection----当用户选择这个节或节的宽度发生了变化需要重画时,将触发该事件
OnSectionClick---当用户单击这个节时就相当于单击一个按钮,将触发该事件,可以在此事件中编写排序代码
OnSectionDrag----当用户试图拖动某一节来改变它的顺序时,将触发该事件
OnSectionEndDrag-当用户拖动某一节并且改变了它的顺序后,将触发该事件
OnSectionResize--当用户用光标拖动节与节之间的分隔线导致节的宽度改变时,将触发该事件
OnSectionTrack---当用户正在用光标拖动节与节之间的分隔线试图改变节的宽度时,将触发该事件

(1)OnDrawSection事件
如果节(THeaderSection对象)的Style属性设为hsOwnerDraw(手动重画),当用户选择了这个节或节的宽度发生了变化需要重画时,将触发这个事件。程序示例代码如下:

procedure TForm1.FormCreate(Sender: TObject);
var
HeaderSection:THeaderSection;
I:Integer;
begin
for I:=0 to 4 do
begin
HeaderSection:=HeaderControl1.Sections.Add;
HeaderSection.Text:=’Text Section’+IntToStr(I);
HeaderSection.MinWidth:=length(HeaderSection.Text)+Font.Size;
if (I mod 2 =0) then
HeaderSection.Style:=hsOwnerDraw
else
HeaderSection.Style:=hsText
end;
end;

procedure TForm1.HeaderControl1DrawSection(HeaderControl: THeaderControl;
Section: THeaderSection; const Rect: TRect; Pressed: Boolean);

begin
with headerControl.Canvas do
begin
if Pressed then
Font.Color:=clRed
else
Font.Color:=clBlue;
Textout(Rect.Left+Font.Size,Rect.Top+2,’Owner Draw Text’);
end;
end;

(2)OnSectionResize事件
当用户用光标拖动节与节之间的分隔线导致节的宽度改变时,将触发该事件。
OnSectionResize事件设定了如下两个消息参数。
. HeaderControl:节所属的表头组件。
. Section:宽度改变的节。

(3)OnSectionTrack事件
当用户正在用光标拖动节与节之间的分隔线试图改变节的宽度时,将触发该事件。其中,State参数表示当前的操作状态。
OnSectionTrack事件设定了如下
. HeaderControl:节所属的表头组件
. Section:宽度改变的节
. State:表示当前的操作状态,取值有3种,tsTrackBegin表示用户已按下节与节之间的分隔线准备拖动;tsTrackMove表示分隔线正在被拖动;tsTrackEnd表示拖放已结束,用户释放了光标。
. Width:开始拖动的节。


你可能感兴趣的:(THeaderControl)