-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathUnit1.pas
83 lines (63 loc) · 2.42 KB
/
Unit1.pas
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
SynEdit, SynEditHighlighter, SynUniHighlighter, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
myEditor: TSynEdit;
myHighlighter: TSynUniSyn;
myTheme: TSynHighlighterTheme;
implementation
{$R *.dfm}
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(myHighlighter);
FreeAndNil(myTheme);
FreeAndNil(myEditor);
end;
procedure TForm1.FormClick(Sender: TObject);
begin
Caption := IntToStr(myHighlighter.GetCacheSize());
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
myEditor := TSynEdit.Create(self);
myEditor.Parent := self;
myEditor.Font.Name := 'Consolas';
myEditor.SelectedColor.Background := $a56d53;
myEditor.Width := 600;
myEditor.Height := Self.ClientHeight;
myEditor.Anchors := [akLeft, akTop, akRight, akBottom];
myEditor.BorderStyle := bsNone;
myEditor.Visible := true;
// myEditor.WordWrap := true; // << слова делятся на части при переносе
myEditor.DoubleBuffered := true;
myEditor.Gutter.Visible := true;
myEditor.Gutter.ShowLineNumbers := true; // << здесь вроде всё норм
myEditor.Gutter.ShowLineStates := true; // << эта фигня не работает
myEditor.Gutter.ShowCodeFolding := true; // << эта фигня тоже не работает
myEditor.Gutter.DigitCount := 2;
myEditor.Gutter.AutoSize := true;
// SpellChecker тоже нихрена не работает, его пока вообще нет в SynEdit-е
// Если попытаться вставить текст этого модуля, появятся иероглифы и другая дрянь
myHighlighter := TSynUniSyn.Create(myEditor);
myHighlighter.LoadGrammar('..\..\sql.package\sql.grammar',
true, nil, 'sql', [suloExternalGrammars], '');
myEditor.Highlighter := myHighlighter;
myTheme := TSynHighlighterTheme.Create('..\..\themes\Alpine.colors');
myHighlighter.LoadFromFile(myTheme);
myEditor.Text := 'select * from myTable' + #13#10 + 'where Name like ''%world!'';';
end;
end.