【问题标题】:How do I keep Delphi from automatically expanding folded code regions?如何防止 Delphi 自动扩展折叠代码区域?
【发布时间】:2014-10-17 14:11:50
【问题描述】:

我在我的单位中广泛使用{$Regions},但有时 VCL 编辑器会做出恼人的决定来自动扩展所有区域。有没有办法告诉编辑不要 要展开折叠的区域,除非我通过单击 + 按钮明确这样做?


来自 cmets 的更新:

发生展开,

  1. 带有嵌套的过程/函数。引入一个新的嵌套“过程”标题。一旦您键入“p”字符,所有其他嵌套的 procs/funcs 就会展开。例如,如果您错误地删除了任何嵌套的 proc/func(或任何类似的东西)的“结束”,也会发生这种情况。
  2. 带有区域。如果您以“{”开始评论,则会展开紧邻下方的区域。以“(*”开头的评论会激发下面的所有区域展开,并且同样适用于这些区域下的所有 procs/funcs。

【问题讨论】:

  • 您能否详细说明您所说的“有时”是什么意思
  • 这里不这样做
  • 不,我没看到。如果我是你,我会提供一个示例程序,用于演示你遇到的情况。
  • 现在您已经了解了一些具体细节。好的。但它需要在问题编辑中。

标签: delphi code-formatting delphi-xe4 code-folding


【解决方案1】:

不幸的是,这是 Delphi 的问题之一,至少从 Delphi XE 开始就存在,即使不是来自旧版本,也没有得到修复。

代码自动展开的原因是,只要 Error Insight 系统检测到您的单元中的任何语法错误,它就会将该点以下的所有代码视为无效,从而展开该点以下的所有折叠代码。

到目前为止,我知道避免这种情况的唯一方法是禁用错误洞察。但这意味着在您尝试编译程序之前,您不会被警告任何潜在的语法错误。

但我非常希望 Embarcadero 能够尽快修复此问题,因为它会使整个代码折叠系统变得无用,除非您禁用 Error Insight,因为您花费更多时间再次折叠自动展开的代码而不是编写任何新代码。

编辑:重现此的步骤(重现它的一种方式)

创建新应用

为您的表单或任何其他两个方法为 OnCreate 和 OnClose 创建两个新的偶数处理程序。

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //
end;

如果您创建了偶数处理程序,请确保在最低处理程序方法中至少有一些代码或至少有一个注释行,以便优化器不会自动删除“empy”事件处理程序。

现在在顶级事件处理程序中写入“表单”。您将看到如何自动扩展底部事件处理程序。

您将看到此时 delphi desent 甚至知道检测到语法错误的当前方法代码块何时何地结束。这也使得无法正确检测低于该点的任何代码块。

【讨论】:

  • 似乎没有人能够按照海报描述的方式重现此问题。如果您有这样做的步骤,您能提供吗?
  • 我已经编辑了我的答案,以包括如何重现此问题的一种方案的步骤。但问题是这种情况发生在多种不同的场景中。
  • @Silver。感谢您的回答。你的目标很明确。我已经发现这是 Embarcadero 需要解决的问题。我希望这在最后一个版本中得到修复。我认为这种行为在某种程度上是不可接受的,因为它使代码折叠变得无用。感谢 Ken 和 David,感谢您的关注,但恕我直言,如果您坚持最初的问题:“我如何防止 Delphi 自动扩展折叠代码区域?”,而不是尝试复制,它应该会更有用行为。
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2014-06-02
  • 1970-01-01
  • 2010-12-27
相关资源
最近更新 更多