Qt5: implemented TCustomMemo.setCaretPos(). Patch by Joeny Ang. Issue

This commit is contained in:
Željan Rikalo 2021-09-15 10:56:17 +02:00
parent 05b1e7d170
commit fc6854704d
2 changed files with 38 additions and 0 deletions

View File

@ -924,6 +924,7 @@ type
procedure setAlignment(const AAlignment: QtAlignment);
procedure setBorder(const ABorder: Boolean);
procedure setCursorPosition(const ACursorPosition: Integer);
procedure setCursorPosition(const APoint: TPoint);
procedure setDefaultColorRoles; override;
procedure setEchoMode(const AMode: QLineEditEchoMode);
procedure setLineWrapMode(const AMode: QTextEditLineWrapMode);
@ -10079,6 +10080,34 @@ begin
QTextCursor_destroy(TextCursor);
end;
procedure TQtTextEdit.setCursorPosition(const APoint: TPoint);
var
TextCursor: QTextCursorH;
WrapMode: QTextEditLineWrapMode;
begin
{we must remove wrapping to get correct line !}
WrapMode := QTextEdit_lineWrapMode(QTextEditH(Widget));
setLineWrapMode(QTextEditNoWrap);
TextCursor := QTextCursor_create();
try
QTextEdit_textCursor(QTextEditH(Widget), TextCursor);
if not QTextCursor_isNull(TextCursor) then
begin
QTextCursor_movePosition(TextCursor, QTextCursorStart,
QTextCursorMoveAnchor);
QTextCursor_movePosition(TextCursor, QTextCursorDown,
QTextCursorMoveAnchor, APoint.Y);
QTextCursor_movePosition(TextCursor, QTextCursorRight,
QTextCursorMoveAnchor, APoint.X);
end;
QTextEdit_setTextCursor(QTextEditH(Widget), TextCursor);
finally
QTextCursor_destroy(TextCursor);
setLineWrapMode(WrapMode);
end;
end;
procedure TQtTextEdit.setDefaultColorRoles;
begin
WidgetColorRole := QPaletteBase;

View File

@ -173,6 +173,7 @@ type
class procedure AppendText(const ACustomMemo: TCustomMemo; const AText: string); override;
class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override;
class procedure SetAlignment(const ACustomEdit: TCustomEdit; const AAlignment: TAlignment); override;
class procedure SetCaretPos(const ACustomEdit: TCustomEdit; const NewPos: TPoint); override;
class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); override;
class procedure SetWantReturns(const ACustomMemo: TCustomMemo; const NewWantReturns: boolean); override;
class procedure SetWantTabs(const ACustomMemo: TCustomMemo; const NewWantTabs: boolean); override;
@ -784,6 +785,14 @@ begin
TQtTextEdit(ACustomEdit.Handle).setAlignment(AlignmentMap[AAlignment]);
end;
class procedure TQtWSCustomMemo.SetCaretPos(const ACustomEdit: TCustomEdit;
const NewPos: TPoint);
begin
if not WSCheckHandleAllocated(ACustomEdit, 'SetCaretPos') then
Exit;
TQtTextEdit(ACustomEdit.Handle).setCursorPosition(NewPos);
end;
class procedure TQtWSCustomMemo.SetScrollbars(const ACustomMemo: TCustomMemo;
const NewScrollbars: TScrollStyle);
begin