1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
unit ex01a;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.dialogs,
Vcl.Controls, Vcl.Forms, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
TYPE
TMemoHelper = class helper for TMemo
private
function GetLineNo: integer;
procedure SetLineNo(NewLineNo: INTEGER);
public
property LineNo : integer Read GetLineNo Write SetLineNo;
END;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TMemoHelper.GetLineNo: integer;
BEGIN
Result := Perform(EM_LINEFROMCHAR, SelStart, 0)
END;
PROCEDURE TMemoHelper.SetLineNo(NewLineNo: INTEGER);
BEGIN
IF NewLineNo < 0 THEN
NewLineNo := 0;
IF NewLineNo > Lines.Count THEN
NewLineNo := Lines.Count;
SelStart := Perform(EM_LINEINDEX, NewLineNo, 0);
Perform(EM_SCROLLCARET, 0, 0);
END;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.LineNo := Memo1.Lines.Count;
Memo1.LineNo := 15;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('ex01a.pas');
end;
end. |
Partager