How to have text as my cursor?

When dragging text between two components, is there an easy way to show the text that I am dragging as a drag cursor?

+4
source share
1 answer

To drag an item from the list and display its textual representation along with the drag cursor:

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, 0, FText); FDragImages.Width := Bmp.Width; FDragImages.Height := Bmp.Height; FDragImages.SetDragImage(FDragImages.Add(Bmp, nil), 0, 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; 
+6
source

Source: https://habr.com/ru/post/1441726/


All Articles