delphi xe2 listview viewstyle bug

来源:互联网 发布:课外阅读训练软件 编辑:程序博客网 时间:2024/05/17 21:53

使用xe2时发现ListView切换ViewStyle时有问题,没有设置LargeImages和SmallImages,使用的系统图标,即:

FSmallImages := SHGetFileInfo('C:\', { Do not localize }    0, FileInfo, SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);SendMessage(FListView.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, FSmallImages);

结果,切换时不显示图标了,查看源码发现多了几行

 

procedure TCustomListView.SetViewStyle(Value: TViewStyle);const  ViewStyles: array[TViewStyle] of Integer = (LVS_ICON, LVS_SMALLICON,    LVS_LIST, LVS_REPORT);var  Style: Longint;begin  if Value <> FViewStyle then  begin    FViewStyle := Value;    if HandleAllocated then    begin      Style := GetWindowLong(Handle, GWL_STYLE);      Style := Style and (not LVS_TYPEMASK);      Style := Style or Integer(ViewStyles[FViewStyle]);      SetWindowLong(Handle, GWL_STYLE, Style);      UpdateColumns;      case ViewStyle of        vsIcon,        vsSmallIcon:          if IconOptions.Arrangement = iaTop then            Arrange(arAlignTop) else            Arrange(arAlignLeft);      end;//怀疑是以下两行代码导致窗口重建了//      if not (csLoading in ComponentState) then//        RecreateWnd;    end;  end;end;

注释掉上面的几行后图标显示正常。

 

	
				
		
原创粉丝点击