delphi – 如何将文本作为拖动光标?
发布时间:2020-12-15 09:25:22 所属栏目:大数据 来源:网络整理
导读:在两个组件之间拖放文本时,是否有一种简单的方法来显示我拖动的文本作为拖动光标? 解决方法 要从列表框中拖动项目,并将其文本表示与拖动光标一起显示: type TTextDragObject = class(TDragControlObjectEx) private FDragImages: TDragImageList; FText: S
在两个组件之间拖放文本时,是否有一种简单的方法来显示我拖动的文本作为拖动光标?
解决方法
要从列表框中拖动项目,并将其文本表示与拖动光标一起显示:
type TTextDragObject = class(TDragControlObjectEx) private FDragImages: TDragImageList; FText: String; protected function GetDragImages: TDragImageList; override; end; { TTextDragObject } function TTextDragObject.GetDragImages: TDragImageList; var Bmp: TBitmap; begin if FDragImages = nil then begin FDragImages := TDragImageList.Create(Control); Bmp := TBitmap.Create; try Bmp.Width := Bmp.Canvas.TextWidth(FText); Bmp.Height := Bmp.Canvas.TextHeight(FText); Bmp.Canvas.TextOut(0,FText); FDragImages.Width := Bmp.Width; FDragImages.Height := Bmp.Height; FDragImages.SetDragImage(FDragImages.Add(Bmp,nil),0); finally Bmp.Free; end; end; Result := FDragImages; end; { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin ControlStyle := ControlStyle + [csDisplayDragImage]; ListBox1.ControlStyle := ListBox1.ControlStyle + [csDisplayDragImage]; end; procedure TForm1.ListBox1StartDrag(Sender: TObject; var DragObject: TDragObject); var List: TListbox absolute Sender; begin DragObject := TTextDragObject.Create(List); if List.ItemIndex > -1 then TTextDragObject(DragObject).FText := List.Items[List.ItemIndex]; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |