设置ListView的页眉图标
2006-02-04 13:45:26 来源:WEB开发网核心提示:(*//标题:设置ListView的页眉图标说明:可以用来做排序修饰图标设计:Zswang支持:wjhu111@21cn.com日期:2004-03-25//*)uses CommCtrl;function ListViewHeaderImages(mListView: TListView; mImages: TIma
(*// 标题:设置ListView的页眉图标 说明:可以用来做排序修饰图标 设计:Zswang 支持:wjhu111@21cn.com 日期:2004-03-25 //*)
uses CommCtrl;
function ListViewHeaderImages(mListView: TListView; mImages: TImageList): Boolean; var vHandle: THandle; begin Result := False; if not Assigned(mListView) then Exit; vHandle := ListView_GetHeader(mListView.Handle); if Assigned(mImages) then Header_SetImageList(vHandle, mImages.Handle) else Header_SetImageList(vHandle, 0); Result := True; end; { ListViewHeaderImages }
function ListColumnImageIndex(mColumn: TListColumn; mImageIndex: Integer; mRight: Boolean = True): Boolean; var vHandle: THandle; vHDItem: THDItem; begin Result := False; if not Assigned(mColumn) then Exit; vHandle := ListView_GetHeader(TListView(mColumn.Collection.Owner).Handle); FillChar(vHDItem, SizeOf(vHDItem), 0); Header_GetItem(vHandle, mColumn.Index, vHDItem); if mImageIndex < 0 then begin vHDItem.Mask := HDI_FORMAT; vHDItem.fmt := HDF_STRING; end else begin vHDItem.Mask := HDI_IMAGE or HDI_FORMAT; vHDItem.iImage := mImageIndex; vHDItem.fmt := HDF_STRING or HDF_IMAGE or (HDF_BITMAP_ON_RIGHT * Ord(mRight)); end; Header_SetItem(vHandle, mColumn.Index, vHDItem); end; { ListColumnImageIndex }
//Example PRocedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn); {$J+} const vIndex: Integer = 0; {$J-} var I: Integer; begin for I := 0 to TListView(Sender).Columns.Count - 1 do ListColumnImageIndex(TListView(Sender).Columns[I], -1); if Abs(vIndex) = Column.Index + 1 then vIndex := -vIndex else vIndex := Column.Index + 1; ListColumnImageIndex(Column, Ord(vIndex > 0)); end;
procedure TForm1.FormCreate(Sender: TObject); begin ListViewHeaderImages(ListView1, ImageList1); end;
更多精彩
赞助商链接