Вариант реализации закладок с TfsSyntaxMemo
Комбинация Ctrl + Shift + клавиша 0..9 основной клавиатуры устанавливает/выключает соответствующую закладку. Комбинация Ctrl + клавиша 0..9 выполняет переход к нужной закладке.
TForm1 = class(TForm)
published
smEditor: TfsSyntaxMemo;
ActionList1: TActionList;
. . .
private
procedure DoSetBookMark(Sender: TObject);
procedure DoGotoBookMark(Sender: TObject);
. . .
end;
uses Menus;
{WINDOWS.PAS: VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
Action: TAction;
begin
for I := $30 to $39 do
begin
Action := TAction.Create(ActionList1);
Action.ShortCut := ShortCut(I, [ssCtrl, ssShift]); // Ctrl+Shift+0..9
Action.OnExecute := DoSetBookMark;
Action := TAction.Create(ActionList1);
Action.ShortCut := ShortCut(I, [ssCtrl]); // Ctrl+0..9
Action.OnExecute := DoGotoBookMark;
end;
end;
procedure TForm1.DoGotoBookMark(Sender: TObject);
var
Key: Word;
Shift: TShiftState;
begin
ShortCutToKey(TAction(Sender).ShortCut, Key, Shift);
smEditor.GotoBookmark(Key - $30);
end;
procedure TForm1.DoSetBookMark(Sender: TObject);
var
W: Word;
Shift: TShiftState;
begin
W := smEditor.IsBookmark(smEditor.GetPos.Y - 1);
if W <> -1 then smEditor.DeleteBookmark(W);
ShortCutToKey(TAction(Sender).ShortCut, W, Shift);
smEditor.AddBookmark(smEditor.GetPos.Y-1, W - $30);
end;
Комментарии