表头组件(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:开始拖动的节。