summaryrefslogtreecommitdiff
path: root/src/gui/fpg_memo.pas
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graeme@mastermaths.co.za>2010-10-15 11:13:37 +0200
committerGraeme Geldenhuys <graeme@mastermaths.co.za>2010-10-15 11:13:37 +0200
commit2f92817a1cbd52906c3e3395e9406c655903eb99 (patch)
tree2ded70456bc60dcf225333d3f6b23e8a5e76f5c6 /src/gui/fpg_memo.pas
parent7e40fc988979504889b2cd409c377a3fa589e550 (diff)
downloadfpGUI-2f92817a1cbd52906c3e3395e9406c655903eb99.tar.xz
Memo: introduced a new CursorPos property
You can now set the Cursor X position via code.
Diffstat (limited to 'src/gui/fpg_memo.pas')
-rw-r--r--src/gui/fpg_memo.pas25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/fpg_memo.pas b/src/gui/fpg_memo.pas
index 308a37a5..41587135 100644
--- a/src/gui/fpg_memo.pas
+++ b/src/gui/fpg_memo.pas
@@ -93,6 +93,7 @@ type
procedure ShowDefaultPopupMenu(const x, y: integer; const shiftstate: TShiftState); virtual;
procedure SetReadOnly(const AValue: Boolean);
procedure ResetSelectionVariables;
+ procedure SetCursorPos(const AValue: integer);
protected
procedure HandleKeyChar(var AText: TfpgChar; var shiftstate: TShiftState; var consumed: boolean); override;
procedure HandleKeyPress(var keycode: word; var shiftstate: TShiftState; var consumed: boolean); override;
@@ -119,6 +120,7 @@ type
procedure Clear;
procedure BeginUpdate;
procedure EndUpdate;
+ property CursorPos: integer read FCursorPos write SetCursorPos;
property CursorLine: integer read FCursorLine write SetCursorLine;
property Font: TfpgFont read FFont;
property LineHeight: integer read FLineHeight;
@@ -422,6 +424,29 @@ begin
FMouseDragging := False;
end;
+procedure TfpgMemo.SetCursorPos(const AValue: integer);
+var
+ x: integer;
+begin
+ if FCursorPos = AValue then
+ exit;
+
+ if AValue = 0 then
+ FCursorPos := AValue
+ else
+ begin
+ x := UTF8Length(FLines[CursorLine]);
+ if AValue > x then { can't set Cursorpos greater than number of characters on that line }
+ FCursorPos := x
+ else
+ FCursorPos := AValue;
+ end;
+ FSelStartPos := FCursorPos;
+ FSelEndPos := FCursorPos;
+ AdjustCursor;
+ Repaint;
+end;
+
constructor TfpgMemo.Create(AOwner: TComponent);
begin
inherited Create(AOwner);