gpt4 book ai didi

delphi - 如何将文本作为我的拖动光标?

转载 作者:行者123 更新时间:2023-12-03 15:23:36 25 4
gpt4 key购买 nike

当在两个组件之间拖放文本时,是否有一种简单的方法来显示我正在拖动的文本作为拖动光标?

最佳答案

要从列表框中拖动项目,并随拖动光标一起显示其文本表示形式:

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;

关于delphi - 如何将文本作为我的拖动光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com