Delphi 2010 TListView一些使用

        Delphi 2010的TListView扩展了一些功能,其中就有项分组功能,在XP和Vista以上系统有效。但是扩展的更多一些功能只对Vista系统有效。下面在XP SP3下实现TListView的分组效果:
1.新建一个应用程序,拖动一个 TListView到窗体上;
2.在窗体创建函数,写入以下代码:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  with lv1 do 
  begin 
    AllocBy := 0;                                //设置总共的项数量,省去每次添加开辟内存空间 
    Checkboxes := False;                         //项左边出现复选框,vsList or vsReport有效 
    Color := clWindow;                           //背景颜色 
    ColumnClick := True;                         //列头能否点击 
    with Columns.Add do                          //增加列 
    begin 
      Alignment := taLeftJustify;                //左对齐 
      Caption := '列一'
      ImageIndex := -1
      Width := 100
    end
    with Columns.Add do                          //增加列 
    begin 
      Caption := '列二'
      ImageIndex := -1
      Width := 50
    end
    Ctl3D := True; 
    DoubleBuffered := False;                     //双缓冲 
    Enabled := True; 
    FlatScrollBars := False;                     //平滑滚动条 
    FullDrag := False;                           //允许拖动列头 
    GridLines := False;                          //表格线 
    GroupHeaderImages := nil;                    //分组头关联图像列表 
    with Groups.Add do                           //增加分组 
    begin 
      BottomDescription := '底部的说明文字'
      ExtendedImage := -1;                       //关联 GroupHeaderImages图像列表,only on Windows Vista 
      Footer := '页脚文本'
      FooterAlign := taLeftJustify;              //页脚文本对齐 
      GroupID := 0;                              //组ID号 
      Header := '页首文本'
      HeaderAlign := taLeftJustify; 
      State := [                                 //分组状态,一些状态只应用于VISTA系统 
                lgsNormal,                       //所有分组展开 
                lgsHidden,                       //分组隐藏 
                lgsCollapsed,                    //分组折叠 Windows Vista only. 
                lgsNoHeader,                     //页首不可见 Windows Vista only. 
                lgsCollapsible,                  //分组可折叠 Windows Vista only. 
                lgsFocused,                      //分组有键盘焦点 Windows Vista only. 
                lgsSelected,                     //分组被选择 Windows Vista only. 
                lgsSubseted,                     //只有分组的一个子集显示出来 Windows Vista only. 
                lgsSubSetLinkFocused             //分组的子集有键盘焦点  Windows Vista only. 
               ]; 
       SubsetTitle := '子集标题'
       Subtitle := '子标题'
       TitleImage := -1;                         //关联 GroupHeaderImages图像列表,only on Windows Vista 
       TopDescription := '顶部的说明文字'
    end
    with Groups.Add do 
    begin 
      GroupID := 1
      Header := '分组标题'
    end
    GroupView := True;                            //打开或关闭分组视图 
    HideSelection := True;                        //失去焦点时,项不再保持被选择状态 
    HotTrack := False;                            //指定是否鼠标移过项进行高亮 
    HotTrackStyles := 
                   //  htHandPoint,               //手势 
                   //  htUnderlineCold,           //非热点下划线 
                   //  htUnderlineHot             //下划线热点 
                      ]; 
    HoverTime := -1;                              //鼠标在项上暂停时间,除非HotTrack为True 
    with IconOptions do                           //确定如何排列图标,vsIcon or vsSmallIcons 有效 
    begin 
      Arrangement := iaTop;                       //项在顶部从左到右对齐,iaLeft在左部从上到下对齐 
      AutoArrange := False;                       //图标自动重新排列 
      WrapText := True;                           //图标标题是否折行 
    end
    with Items.Add do                             //增加项 
    begin 
      Caption := '行一列一'
      ImageIndex := -1;                           //关联 LargeImages or SmallImages图像列表 
      StateIndex := -1;                           //关联StateImages图像列表 
      GroupID := 0;                               //关联分组ID号 
      SubItems.Add('行一列二');                   //添加第二列 
    end
    with Items.Add do 
    begin 
      Caption := '行二列一'
      GroupID := 1
      SubItems.Add('行二列二'); 
    end
    LargeImages := nil;                            //大图标图像列表 
    MultiSelect := False;                          //多选 
    OwnerData := False;                            //指定列表视图控件是否是虚拟的 
    OwnerDraw := False;                            //自绘项 
    ParentColor := False;                          //继承父控件颜色 
    ReadOnly := False;                             //只读 
    RowSelect := False;                            //整行选择 
    ShowColumnHeaders := True;                     //显示列头,vsReport有效 
    ShowWorkAreas := False;                        //显示工作区,vsIcon or vsSmallIcon有效,不支持 OwnerData 
    SmallImages := nil;                            //小图标图像列表 
    SortType := stNone;                            //确定列表项如何自动排序 
    StateImages := nil;                            //状态图像列表 
    ViewStyle := vsReport;                         //视图风格,vsIcon、vsSmallIcon、vsList、vsReport 
  end
end
3.运行结果如下所示:

Delphi 2010 TListView一些使用_第1张图片

4.拖动一个TImageList到窗体上,添加一些图标到TImageList上,使TListView所有可以关联图像列表的都关联到此TImageList上,然后分别设置图像索引的不同,运行结果如下图所示:
Delphi 2010 TListView一些使用_第2张图片
Windows 7下效果分别如下:

Delphi 2010 TListView一些使用_第3张图片

Delphi 2010 TListView一些使用_第4张图片

设定隐藏的分组在Windows 7可以成功隐藏起来。


你可能感兴趣的:(windows,header,XP,扩展,Delphi,2010)