Delphi 带有复选框和子项图像的TListView
使用标准的TListView组件ViewStyle=vsReport,我附加了一个TImageList,并成功地将图像添加到第一列项目中。ImageIndex:=0和后续列项目[0]。SubItemImages[1]:=1 如果我随后将checkbox属性设置为True,则子项上的图像将消失。主图像仍然是Item.ImageIndex设置的图像,但子项将丢失其图像 我还注意到,当复选框=True时,OnGetSubItemImage事件不会触发Delphi 带有复选框和子项图像的TListView,delphi,listview,Delphi,Listview,使用标准的TListView组件ViewStyle=vsReport,我附加了一个TImageList,并成功地将图像添加到第一列项目中。ImageIndex:=0和后续列项目[0]。SubItemImages[1]:=1 如果我随后将checkbox属性设置为True,则子项上的图像将消失。主图像仍然是Item.ImageIndex设置的图像,但子项将丢失其图像 我还注意到,当复选框=True时,OnGetSubItemImage事件不会触发 有人知道解决这个问题的方法吗?这没有什么特别的帮助
有人知道解决这个问题的方法吗?这没有什么特别的帮助,但是TMS TAdvListView组件使用其子映像属性来处理它。将此设置为True,我可以有复选框和子项图像。我相信在幕后有很多好的工作在进行。至少这让我向前迈进了一步。这并没有特别的帮助,但是TMS TAdvListView组件使用其子映像属性来处理它。将此设置为True,我可以有复选框和子项图像。我相信在幕后有很多好的工作在进行。至少这让我前进了。这是一个非常老的错误,当您激活checkbox属性时,将禁用LVS_EX_子项图像和 TListView控件上的LVS_EX_信息提示样式 您可以使用此解决方法来修复此错误 1禁用listview中的复选框属性 2将在Delphi 7和windows 7中测试的代码放入表单中
const
LVM_FIRST =$1000;
LVS_EX_SUBITEMIMAGES = $00000002;
LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
function ListView_GetExtendedListViewStyle(LVWnd: HWnd): DWORD;
begin
Result := SendMessage(LVWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
end;
function ListView_SetExtendedListViewStyle(LVWnd: HWnd; ExStyle: LPARAM): DWORD;
begin
Result := SendMessage(LVWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.Checkboxes:=True;//Activate the checkbox in the listview
ListView_SetExtendedListViewStyle(ListView1.Handle,ListView_GetExtendedListViewStyle(ListView1.Handle) OR LVS_EX_SUBITEMIMAGES); //Activate the LVS_EX_SUBITEMIMAGES style.
end;
最后的结果是
这是一个非常老的错误,当您激活复选框属性时,将禁用LVS_EX_子项图像和 TListView控件上的LVS_EX_信息提示样式 您可以使用此解决方法来修复此错误 1禁用listview中的复选框属性 2将在Delphi 7和windows 7中测试的代码放入表单中
const
LVM_FIRST =$1000;
LVS_EX_SUBITEMIMAGES = $00000002;
LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
function ListView_GetExtendedListViewStyle(LVWnd: HWnd): DWORD;
begin
Result := SendMessage(LVWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
end;
function ListView_SetExtendedListViewStyle(LVWnd: HWnd; ExStyle: LPARAM): DWORD;
begin
Result := SendMessage(LVWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, ExStyle);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.Checkboxes:=True;//Activate the checkbox in the listview
ListView_SetExtendedListViewStyle(ListView1.Handle,ListView_GetExtendedListViewStyle(ListView1.Handle) OR LVS_EX_SUBITEMIMAGES); //Activate the LVS_EX_SUBITEMIMAGES style.
end;
最后的结果是
据我所知,由于windows本身使用图像作为这些“复选框”,您不能同时使用标准控件,因此您必须绘制每个列表项。据我所知,您不能同时使用标准控件,因为windows本身使用图像作为这些“复选框”,因此,您必须绘制每个列表项。应用样式后,您是否将图像添加到此列表项?应用样式后,您是否将图像添加到此列表项?