mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-10 04:12:54 +02:00
112 lines
2.7 KiB
ObjectPascal
112 lines
2.7 KiB
ObjectPascal
unit Unit1;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Forms, Controls, ExtCtrls, StdCtrls, Spin,
|
|
SynEdit, SynEditTypes, SynEditMarks;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
Button1: TButton;
|
|
chkMarkGutterAutoSize: TCheckBox;
|
|
chkDrawBookMarkFirst: TCheckBox;
|
|
chkBookMark: TCheckBox;
|
|
ImageList1: TImageList;
|
|
imgBookMarks: TImageList;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Panel1: TPanel;
|
|
Panel2: TPanel;
|
|
Panel3: TPanel;
|
|
spinMarkGutterWidth: TSpinEdit;
|
|
SpinLine: TSpinEdit;
|
|
spinImg: TSpinEdit;
|
|
SynEdit1: TSynEdit;
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure chkDrawBookMarkFirstChange(Sender: TObject);
|
|
procedure chkBookMarkChange(Sender: TObject);
|
|
procedure chkMarkGutterAutoSizeChange(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure spinMarkGutterWidthChange(Sender: TObject);
|
|
procedure SynEdit1StatusChange(Sender: TObject; Changes: TSynStatusChanges);
|
|
private
|
|
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TForm1 }
|
|
|
|
procedure TForm1.SynEdit1StatusChange(Sender: TObject; Changes: TSynStatusChanges);
|
|
begin
|
|
if scModified in Changes then SpinLine.MaxValue := SynEdit1.Lines.Count;
|
|
end;
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
var
|
|
m: TSynEditMark;
|
|
begin
|
|
if chkBookMark.Checked
|
|
then begin
|
|
SynEdit1.SetBookMark(spinImg.Value, 1, SpinLine.Value);
|
|
end
|
|
else begin
|
|
m := TSynEditMark.Create(SynEdit1);
|
|
m.Line := SpinLine.Value;
|
|
m.ImageList := ImageList1;
|
|
m.ImageIndex := spinImg.Value;
|
|
m.Visible := true;
|
|
SynEdit1.Marks.Add(m);
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.chkDrawBookMarkFirstChange(Sender: TObject);
|
|
begin
|
|
SynEdit1.BookMarkOptions.DrawBookmarksFirst := chkDrawBookMarkFirst.Checked;
|
|
end;
|
|
|
|
procedure TForm1.chkBookMarkChange(Sender: TObject);
|
|
begin
|
|
if chkBookMark.Checked
|
|
then spinImg.MaxValue := 9
|
|
else spinImg.MaxValue := 4;
|
|
end;
|
|
|
|
procedure TForm1.chkMarkGutterAutoSizeChange(Sender: TObject);
|
|
begin
|
|
SynEdit1.Gutter.MarksPart(0).AutoSize := chkMarkGutterAutoSize.Checked;
|
|
end;
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
(* SynEdit currently does not include own images for bookmarks.
|
|
If no images are given it will currently crash *)
|
|
SynEdit1.BookMarkOptions.BookmarkImages := imgBookMarks;
|
|
spinMarkGutterWidth.Value := SynEdit1.Gutter.MarksPart(0).Width;
|
|
chkMarkGutterAutoSize.Checked := SynEdit1.Gutter.MarksPart(0).AutoSize;
|
|
chkDrawBookMarkFirst.Checked := SynEdit1.BookMarkOptions.DrawBookmarksFirst;
|
|
end;
|
|
|
|
procedure TForm1.spinMarkGutterWidthChange(Sender: TObject);
|
|
begin
|
|
SynEdit1.Gutter.MarksPart(0).Width := spinMarkGutterWidth.Value;
|
|
end;
|
|
|
|
end.
|
|
|