如何显示每10行的行号?

问题描述 投票:0回答:2

SynEdit
控件有一个事件
OnGutterGetText
。我想用它来使装订线仅显示每 10 行号(也是第 1 行和当前选定的行)。与 Delphi (XE7) IDE 的工作方式相同。如何使用此事件确定是否显示该线?

delphi synedit
2个回答
4
投票

这个问题与现实中的编辑控件无关。您只想知道

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

0
投票
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;

享受:)

© www.soinside.com 2019 - 2024. All rights reserved.