SynEdit
控件有一个事件 OnGutterGetText
。我想用它来使装订线仅显示每 10 行号(也是第 1 行和当前选定的行)。与 Delphi (XE7) IDE 的工作方式相同。如何使用此事件确定是否显示该线?
这个问题与现实中的编辑控件无关。您只想知道
a
是否是 b
的精确倍数。如果 a
除以 b
的余数为零,情况就是如此。 Delphi 中的余数运算符是 mod
。
if a mod b = 0 then
现在,根据您的情况,您想要
if LineNum mod 10 = 0 then
这假设
LineNum
是基于 1 的。如果它是零基础的那么你需要
if (LineNum + 1) mod 10 = 0 then
procedure TForm1.SynEditGutterGetText(Sender: TObject; aLine: Integer;
var aText: string);
begin
if aLine = TSynEdit(Sender).CaretY then
Exit;
// Экспериментируйте ниже
// Experiment below
if aLine mod 10 <> 0 then
if aLine mod 5 <> 0 then
aText := '-'
else
aText := '—';
end;
***
Reset:
// Возвращаем значение номеров по умолчанию
// Reset to Default
SynEdit1.OnGutterGetText := nil;
SynEdit1.InvalidateGutter;
享受:)