gpt4 book ai didi

delphi - Firemonkey TMemo 组件中鼠标坐标到插入符位置

转载 作者:行者123 更新时间:2023-12-03 17:16:32 25 4
gpt4 key购买 nike

处理 Firemonkeys 上的鼠标/拖放事件 TMemo 组件提供鼠标光标坐标。有没有办法根据鼠标坐标计算 CaretPosition?

我想将文本拖动到 TMemo 中,并且该文本应插入到当前的鼠标坐标处。

最佳答案

尝试调用 GetPointPosition .

不幸的是,这似乎已从 XE3 中的 TMemo 中删除。作为一种快速而肮脏的解决方法,您可以尝试以下方法:

function GetPointPosition(Memo: TMemo; Pt: TPointF; RoundToWord: Boolean = False): TCaretPosition;
var
I, LPos: Integer;
Rgn: TRegion;
begin
Result.Line := -1;
Result.Pos := -1;
for I := 0 to Memo.Lines.Count - 1 do
begin
if Memo.Lines.Objects[I] is TTextLayout then
begin
LPos := TTextLayout(Memo.Lines.Objects[I]).PositionAtPoint(Pt, RoundToWord);
if LPos >= 0 then
begin
if LPos > 0 then
begin
Rgn := TTextLayout(Memo.Lines.Objects[I]).RegionForRange(TTextRange.Create(LPos, 1), RoundToWord);
if (Length(Rgn) > 0) and (Rgn[0].Top > Pt.Y) then
Dec(LPos);
end;
Result.Line := I;
Result.Pos := LPos;
Break;
end;
end;
end;
end;

关于delphi - Firemonkey TMemo 组件中鼠标坐标到插入符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224549/

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