How to change the drag cursor image when dragging in a TTreeView #119
Question
When I start a drag and drop operation in a TTreeView the
cursor changes into the image of the treenode dragged. How can I change
this image?
There is a virtual protected method called GetDragImages in the TCustomTreeView class. You could override it and return your copy of the drag images list (TDragImageList), or just use an existing one, but make some changes to its default image. Below is an example of how you could solve it. It's a TTreeView descendant which provides custom drag images.
{ ... } TMyTreeView = class(TTreeView) protected function GetDragImages: TDragImageList; override; end; { ... } function TMyTreeView.GetDragImages: TDragImageList; var XNode: TTreeNode; XImage: TBitMap; begin Result := inherited GetDragImages; if Assigned(Result) and Assigned(Images) then begin XImage := TBitMap.Create; try Result.GetBitmap(0, XImage); Result.Clear; Result.Height := 100; Result.Width := 100; XImage.Height := Result.Height; XImage.Width := Result.Width; XImage.Canvas.Brush.Color := clRed; XImage.Canvas.FillRect(Rect(0, 0, 100, 100)); XNode := Selected; if Assigned(XNode) then XImage.Canvas.TextOut(40, 40, XNode.Text); Result.Add(XImage, nil); finally XImage.Free; end; end; end;
Original resource: | The Delphi Pool |
---|---|
Author: | Serge Gubenko |
Added: | 2009/10/28 |
Last updated: | 2009/10/28 |