Hi Martin fr.
I resolved the problem, and it was thanks to you ...
unit news;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
SynEdit, SynEditMarkupSelection, SynEditTypes, SynEditMarkup,
SynEditPointClasses;
type
{ TForm1 }
TSynEdit1 = class(TSynEdit)
private
FMyBlock: TSynEditSelection;
fMyMarkup: TSynEditMarkupSelection;
FMyBlock_: TSynEditSelection;
fMyMarkup_: TSynEditMarkupSelection;
public
constructor Create(AOwner: TComponent); override;
end;
TForm1 = class(TForm)
Button1: TButton;
SynEdit1: TSynEdit1;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SynEdit1StatusChange(Sender: TObject; Changes: TSynStatusChanges);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
constructor TSynEdit1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FMyBlock := TSynEditSelection.Create(ViewedTextBuffer, FAlse);
FMyBlock.InvalidateLinesMethod := @InvalidateLines;
fMyMarkup := TSynEditMarkupSelection.Create(self, FMyBlock);
TSynEditMarkupManager(MarkupMgr).AddMarkUp(fMyMarkup);
FMyBlock_:= TSynEditSelection.Create(ViewedTextBuffer, FAlse);
FMyBlock_.InvalidateLinesMethod := @InvalidateLines;
fMyMarkup_ := TSynEditMarkupSelection.Create(self, FMyBlock_);
TSynEditMarkupManager(MarkupMgr).AddMarkUp(fMyMarkup_);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SynEdit1:=TSynEdit1.Create(self);
SynEdit1.Parent:= self;
SynEdit1.Left:=100;
SynEdit1.Top:=0;
with SynEdit1 do begin
SynEdit1.text := 'ouaueuioeiuueiaoeuouoeauoeua' + LineEnding +'ouaueuioeiuueiaoeuouoeauoeua' + LineEnding +'ouaueuioeiuueiaoeuouoeauoeua' + LineEnding ;
fMyMarkup.Enabled := true;
fMyMarkup.MarkupInfo.FrameColor := clRed;
fMyMarkup.MarkupInfo.FrameEdges := sfeAround;
fMyMarkup.MarkupInfo.FrameStyle := slsSolid;
fMyMarkup_.Enabled := true;
fMyMarkup_.MarkupInfo.FrameColor := clRed;
fMyMarkup_.MarkupInfo.FrameEdges := sfeAround;
fMyMarkup_.MarkupInfo.FrameStyle := slsSolid;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with synedit1 do begin
FMyBlock.StartLineBytePos := Point(2,1);
FMyBlock.EndLineBytePos := Point(5,1);
FMyBlock_.StartLineBytePos := Point(3,2);
FMyBlock_.EndLineBytePos := Point(6,2);
end;
end;
procedure TForm1.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
if (synedit1.CaretX=2)and(synedit1.CaretY=2) then showmessage('hello');
end;
{$R *.lfm}
end.
However, there is something I have not been resolved:
Why SynEdit1StatusChange event does not work?
procedure TForm1.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
if (synedit1.CaretX=2)and(synedit1.CaretY=3) then showmessage('hello');
end;
I only need this to complete.
Thanks