diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2010-10-15 11:13:37 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2010-10-15 11:13:37 +0200 |
commit | 2f92817a1cbd52906c3e3395e9406c655903eb99 (patch) | |
tree | 2ded70456bc60dcf225333d3f6b23e8a5e76f5c6 /src/gui/fpg_memo.pas | |
parent | 7e40fc988979504889b2cd409c377a3fa589e550 (diff) | |
download | fpGUI-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.pas | 25 |
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); |