📄 exmemo.pas
字号:
unit ExMemo;
interface
uses
Windows,SysUtils, Classes, QControls, QStdCtrls,Messages,StdCtrls;
type
TddgExtendedMemo = class(TMemo)
private
{ Private declarations }
FRow:LongInt;
FColumn:LongInt;
FOnHScroll:TNotifyEvent;
FOnVScroll:TNotifyEvent;
procedure WMHScroll(var Msg:TWMHScroll);message WM_HSCROLL;
procedure WMVScroll(var Msg:TWMVScroll);message WM_VSCROLL;
procedure SetRow(Value:LongInt);
procedure SetColumn(Value:LongInt);
function GetRow:LongInt ;
function GetColumn:LongInt ;
protected
{ Protected declarations }
procedure HScroll;dynamic;
procedure VScroll;dynamic;
public
{ Public declarations }
property Row:LongInt read GetRow write SetRow;
property Column:LongInt read GetColumn write SetColumn;
published
{ Published declarations }
property OnHScroll:TNotifyEvent read FOnHScroll write FOnHScroll;
property OnVScroll:TNotifyEvent read FOnVScroll write FOnVScroll;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TddgExtendedMemo]);
end;
{ TddgExtendedMemo }
function TddgExtendedMemo.GetColumn: LongInt;
begin
Result := SelStart - Perform(EM_LINEINDEX,-1,0);
end;
function TddgExtendedMemo.GetRow: LongInt;
begin
Result := Perform(EM_LINEFROMCHAR,-1,0);
end;
procedure TddgExtendedMemo.HScroll;
begin
if Assigned(FOnHScroll) then
FOnHScroll(Self);
end;
procedure TddgExtendedMemo.SetColumn(Value: Integer);
begin
FColumn := Perform(EM_LINELENGTH,Perform(EM_LINEINDEX,GetRow,0);
if FColumn > Value then
FColumn := Value;
SelStart := Perform(EM_LINEINDEX,GetRow,0)+FColumn;
end;
procedure TddgExtendedMemo.SetRow(Value: Integer);
begin
SelStart := Perform(EM_LINEINDEX,Value,0);
FRow := SelStart;
end;
procedure TddgExtendedMemo.VScroll;
begin
if Assigned(FOnVScroll) then
FOnVScroll(Self);
end;
procedure TddgExtendedMemo.WMHScroll(var Msg: TWMHScroll);
begin
inherited;
HScroll;
end;
procedure TddgExtendedMemo.WMVScroll(var Msg: TWMVScroll);
begin
inherited;
VScroll;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -