- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 ViewStyle := vsReport 的 ListView。当我将一行从一个点拖动到另一个点时,它会获取被拖动行的第一列的值(在本例中为 1),并将其显示在深灰色矩形内,如下所示。
我尝试查看 XE4 源代码,但找不到设置此背景颜色的位置。我想将此背景颜色更改为 clSkyBlue (或类似的颜色),但不知道它是如何完成的。
如何更改拖动操作的默认深灰色背景图像?
最佳答案
VCL 的拖动操作没有开箱即用的拖动图像,但它确实提供了一种机制来提供要使用的拖动图像。这通常是通过构造您自己的“拖动图像列表”来完成的,或者通过重写控件本身的 GetDragImages
方法(当使用内部拖动对象时),或者通过构造您自己的“拖动对象”当拖动开始时,并在其 GetDragImages
方法中组装一个图像列表,以便在拖动开始时由 VCL 调用。
对于 TListView
和 TTreeView
控件,此机制有点不同,因为底层 api 控件本身支持为正在拖动的项目提供拖动图像。因此,与其他控件不同,这些控件会重写其 GetDragImages
方法,并返回在重写的 DoStartDrag
方法中创建的图像列表,其中控件要求 api 提供图像列表。这就是为什么您无法找到在 VCL 代码中创建拖动图像的位置。
要重写此行为,可以在后代类中重写这些(可能还有其他一些)方法并实现它们。我不知道这是否容易,我发现通过在 OnStartDrag 事件处理程序中构造拖动对象来提供图像列表更容易。这通常不会产生任何影响,因为在调用拖动对象的 GetDragImages
时,VCL 已经确定了 api 提供的图像列表,并且 api 已经创建了一个临时列表被拖拽。然后,我们可以强制将原始图像列表拖到末尾并替换为我们自己的图像列表。
下面是一个过于简化的示例。除了错误处理、资源保护、热点确定等之外……查看 VCL 代码,看看它如何确保确实有一个项目被拖动。
type
TListWiewDragControlObjectEx = class(TDragControlObjectEx)
protected
function GetDragImages: TDragImageList; override;
end;
function TListWiewDragControlObjectEx.GetDragImages: TDragImageList;
var
Bmp: TBitmap;
R: TRect;
begin
Bmp := TBitmap.Create;
Bmp.Canvas.Brush.Color := clSkyBlue;
R := TListView(Control).Selected.DisplayRect(drBounds);
Bmp.SetSize(R.Right - R.Left, R.Bottom - R.Top);
Bmp.Canvas.Font := TListView(Control).Font;
Bmp.Canvas.TextOut(0, 0, TListView(Control).Selected.Caption);
Result := TDragImageList.Create(Control);
Result.Width := Bmp.Width;
Result.Height := Bmp.Height;
ImageList_EndDrag; // end the drag with the temporary list
Result.SetDragImage(Result.Add(Bmp, nil), 0, 0);
Bmp.Free;
end;
procedure TForm1.ListView1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
DragObject := TListWiewDragControlObjectEx.Create(ListView1);
DragObject.AlwaysShowDragImages := True;
end;
关于delphi - 如何更改ListView OnDrag图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982747/
我远不是 html/javascript 专家,我对这个问题很着迷。在网上没有找到与此相关的任何信息,我尝试了多种方法但没有成功。 基本上,我使用拖动功能来实现某些目标。我真的不需要拖放,我只对拖放感
我正在使用 JQuery Tabs,我想在拖动它时更改指针。 有人知道在哪里可以找到如何做到这一点吗? 最佳答案 CSS .ui-tabs ul.ui-tabs-nav li.ui-state-def
我正在编写一个应用程序,用户可以在其中购买建筑物(图像按钮)并使用拖放 API 自由移动它们。我想做的是保存建筑物的坐标,以便可以将它们加载回原来的位置。我目前正在尝试使用共享首选项,但当尝试在 on
我正在创建一个应用程序,用户可以在其中购买建筑物,这些建筑物是也实现拖放 API 的图像按钮。目前我遇到一个问题,假设我已经购买了 2 栋建筑:colonyHutOne 和 colonyHutTwo。
I want a mouse drager event when i drag and move the mouse accordingly with the velocity of mouse mo
我正在开发一个 Android 应用程序,用户可以在其中购买建筑物,这些建筑物是实现拖放 API 的图像按钮。我的问题是,当用户购买两座建筑物时,比如 colonyHutOne 和 colonyHut
我有一个拖放应用程序,它使用 JQuery UI onDrag 和 onDrop。该应用程序是一个带有选项卡的房间预订系统。我已经使 drop-work 完美运行,但有一个功能是我真正想要的(如果可能
该对象如下所示: 这就是我访问它的方式:console.log(this)(this输出Directive对象)。 如何调用该对象的 ondrag 事件? 我尝试过这个: this.el('ondra
当我注册一个多边形或只有一个组件的复合形状时,我可以使用该形状创建一个 turtle 光标,添加一个拖动事件处理程序,并将它拖到屏幕上。 但是当我用第二个组件注册一个复合形状时,我不能再拖动它了: f
我一直在尝试使用 ondrag()和 div 上的一些其他功能在 HTML 上动态呈现页面。 这些事件似乎都没有触发,我也没有收到任何错误。我也找不到很多有用的文档。我是不是理解错了,您可以使用这些事
我注意到自 iOS 13.4 以来可用的 SwiftUI 中的拖放功能存在问题。使用 .onDrag 和 .onDrop 修饰符的拖放操作在模拟器中运行良好,但在真实设备(iPhone 和 iPad)
我遇到了以下问题:我想为 LinearLayout 实现 View.DragOnListener。当我长按屏幕时,OnDrag 方法接收到 DragEvent.ACTION_DRAG_STARTED,
例如: https://github.com/lbj96347/easypost/blob/master/test.html (p.s:你应该有 jquery 和页面的 css 文件。:-)) 像这个
尝试让下面的代码工作: public void OnBeginDrag(PointerEventData eventData) { if (item.ID != -1) {
我一直想知道是否有任何方法可以自定义使用 onDrag 时被拖动的 view 的 preview image? 如您所见,默认情况下,预览图像 是略大的不透明度图像。 根据我的发现,preview i
我一直想知道是否有任何方法可以自定义 preview image的view使用 onDrag 时被拖动? 如您所见,preview image默认情况下, View 的不透明度图像稍大。 根据我的发现
我用JS编写了一个函数,需要向其中传递一个变量。在这种情况下,实际的功能并不重要,但我不知道如何让它正确地传递变量。 HTML 看起来像这样 - 然后,我们将该函数描述为.. fu
在React js中,每个拖动事件都有一个带有“capture”前缀的相应事件onDragEnter 与 onDragEnterCapture、onDragLeave 与 onDragLeaveCap
我有一个小网站,我想在其中混淆一些文本,以保护不小心不及时阅读它的用户。 很像 imdb 上的关键词,你必须滚动才能显示它们。 我认为如果文本被标记,这将是一种很好的交互式方式来显示文本。 例子: H
这是我的便签本 http://jsbin.com/aledig/1/edit绘制时光标由指针改变,如何防止? 最佳答案 我在这个便签本中找不到任何问题。光标在 IE 和 FireFox 中始终是指针。
我是一名优秀的程序员,十分优秀!