【问题标题】:How to select a line in SynEdit when clicked on the left in the gutter?单击装订线左侧时如何在 SynEdit 中选择一行?
【发布时间】:2023-03-08 12:08:02
【问题描述】:

我想在类似于 Delphi 代码编辑器的装订线中单击左侧时选择一行(单击行号,已安装 CNPack)。我想答案在于 selStart、selEnd、smLine 选择模式,但无法做出任何可行的解决方案。

procedure TForm1.SynEdit1GutterClick(Sender: TObject; Button: TMouseButton; X,
  Y, Line: Integer; Mark: TSynEditMark);
begin
    SynEdit1.SelectionMode := smLine;
    SynEdit1.SelStart := 0;
    SynEdit1.SelEnd := SynEdit1.Lines[Line].Length;
    SynEdit1.SelectionMode := smNormal; //restore
    //Code not working
    //I don't remember the code which made it select a line with smLine

end;

【问题讨论】:

  • 如果您创建了minimal reproducible example,我们可以轻松地对其进行修改以满足您的需求。否则,我们必须花时间编写测试台程序。
  • 我们不知道您正在处理哪个事件。也许有多种可能性,而您选择了错误的一种。如果每次你问一个问题你都会因为没有提供 MCVE 而受到指责,你不认为你应该听吗?或者,如果您不愿意,并且不喜欢 SO 的工作方式,为什么不问更符合您期望的其他地方呢?
  • 对我来说这是 SynEdit 中的默认行为。尝试单击排水沟并向下移动鼠标。行被选中。
  • 该 SO 链接以这种方式开始 - “当询问有关由您的代码引起的问题时......”。对不起,我没有代码开始。我在问是否有人知道 synEdit 库方法来实现我正在寻找的东西。
  • 代码注释中的“我不记得是什么代码使它选择了带有smLine的行”是什么意思? - 那么,您是否设法选择了一行? :)

标签: delphi delphi-xe5


【解决方案1】:

你可以使用ecSelLineEnd命令:

SynEdit1.ExecuteCommand(ecSelLineEnd, #0, nil) 

在装订线点击事件中。

您需要包含单位SynEditKeyCmds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多