의 위치를 캐럿 위해 Mousecursor 좌표 제공합니다. 마우스 좌표에서 CaretPosition을 계산하는 방법이 있습니까?마우스 좌표가 Firemonkeys 잇는 TMemo 구성 요소에 마우스/드래그를 & 드롭 이벤트 처리 Firemonkey 잇는 TMemo 컴포넌트
은 내가 잇는 TMemo에 텍스트를 드래그 할이 텍스트는 현재 MouseCoordinates에 삽입해야합니다.
의 위치를 캐럿 위해 Mousecursor 좌표 제공합니다. 마우스 좌표에서 CaretPosition을 계산하는 방법이 있습니까?마우스 좌표가 Firemonkeys 잇는 TMemo 구성 요소에 마우스/드래그를 & 드롭 이벤트 처리 Firemonkey 잇는 TMemo 컴포넌트
은 내가 잇는 TMemo에 텍스트를 드래그 할이 텍스트는 현재 MouseCoordinates에 삽입해야합니다.
시도 GetPointPosition
를 호출.
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;
'FMX.Memo.TMemo.GetPointPosition'은 XE2에서만 사용 가능한 것으로 보입니다. XE4에서 이동되었거나 삭제 되었습니까? –
예, XE3에서 제거 된 것으로 보입니다. –
'GetPointPosition'는 FMX.Memo.pas에 정의 된'TMemoLines'의 회원 기능입니다. 불행히도 이것은 개인적인 유형입니다. 'TMemo'의'lines '멤버는'TStrings'로 정의되었지만'TMemoLines'으로 생성되었습니다. 잠시 후에이 기능을 사용할 실제 방법이 없습니다. –
아야! 프레임 워크가 이것을 구현하지 않습니까? 그렇지 않으면 실망 할 것입니다. –