【发布时间】:2013-07-31 23:28:15
【问题描述】:
我正在使用带有 ViewStyle := vsReport 的 ListView。当我将一行从一个点拖动到另一个点时,它会获取被拖动行的第一列的值(在这种情况下为 1)并将其显示在一个深灰色的矩形内,如下所示。
我尝试在 XE4 源代码中四处查看,但找不到设置此背景颜色的位置。我想将此背景颜色更改为 clSkyBlue (或类似的),但不知道它是如何完成的。
如何更改拖拽操作的默认深灰色背景图片?
【问题讨论】:
-
找不到,VCL代码中没有设置背景色。 VCL 调用
ListView_CreateDragImage传递被拖动项目的索引,操作系统返回一个图像列表,稍后由ImageList_BeginDrag拖动。 -
@SertacAkyuz 图片在这个 dll comctl32.dll 中,对吗?也许可以通过此方法添加图像:ImageList_AddIcon() 但我不确定,甚至更好,用此方法 ImageList_ReplaceIcon 替换它。但是,自定义它会更改整个操作系统的图像。
-
@SertacAkyuz 另外,图像索引为 0,请参见此处:
SetDragImage(0, 2, 2);在此过程中procedure TCustomTreeView.DoStartDrag(var DragObject: TDragObject); -
@Matheus - 改变图像列表中的第一张图像没有问题,列表被创建和销毁一次拖动操作。
标签: delphi listview drag delphi-xe4