【问题标题】:Prevent methods with empty bodies from deletion on save防止在保存时删除具有空主体的方法
【发布时间】:2012-11-23 07:18:45
【问题描述】:

一直按Ctrl+S 是我的一个很矛盾的习惯。不利的一面是,delphi 在保存时会删除空函数/过程。

有没有办法防止 IDE 在保存时删除具有空主体的函数/过程?

【问题讨论】:

  • 这仅发生在事件处理程序中。立即写下它们或用 todo 评论它们
  • @user539484 请把它作为答案发布

标签: delphi ide delphi-7


【解决方案1】:

根据 OP 请求从评论转换而来。我的评论太小了,无法回答,所以我将添加一些可能对 OP 来说已经很明显的细节。

这仅发生在事件处理程序中¹。立即写下它们或 用 todo²

评论他们

¹ 也就是说,event handlersdesign 类 的方法,它们由 form designer 创建、列出和删除(如果在保存或编译时发现为空) >(这包括数据模块设计器和安装的任何其他自定义设计器)。授予您可能熟悉 C# 背景的代表。其他任何方式均需“人工”管理。

² TODO items(默认键绑定中为 Ctrl+Shift+T)绝对比空白 cmets 更好:

procedure TForm1.MagicButton1Click(Sender: TObject);
begin
  { TODO -ctomorrow : I'm going to write the code, I promise! }
end;

可能的特殊情况

TActionAutoCheck 设置必须(请参阅下面Sir Rufo 的评论以了解运行时的另一种可能性)分配其OnExecute 以便成为Enabled。在这种情况下,在设计类中不可避免地会有这样的空白事件处理程序。示例:

procedure TMonitor.AutoCheckActionExecute(Sender: TObject);
begin
  // dummy stub
  { DONE -crefactor : merge with other stub(s) }
end;

【讨论】:

  • 仍然缺少指向关于“设计类”概念的介绍性文本的链接。知道吗?
  • TAction 没有特殊情况。只需将 TAction.DisableIfNoHandler 设置为 false。但是你必须在运行时这样做,因为它不是一个已发布的属性(只是公共的)
  • @Sir Rufo,是的,这个未发布的属性使存根处理程序变得更简单。
  • 同意大卫和你的观点。不再做太多的表单编程,但你的方法是我以前做的。
  • @user539484 更简单 - 是的,必须 - 否
【解决方案2】:

只需添加一个空评论,例如//

begin 
//
end;

另一种方法是将声明移至published part

type
  TForm5 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject); // will be removed if empty
  private
    { Private-Deklarationen }
  public
  published
    procedure Button2Click(Sender: TObject); // will not be removed if empty

    { Public-Deklarationen }
  end;

【讨论】:

  • 我知道这种方式,但实际上我很高兴知道一些 IDE 选项可以完全关闭这种行为。
  • @Konstantin:我认为没有。 (除了修补一些二进制文件,也许。:-))
  • 嗯,我使用 IDE 的行为对我有利:如果我想删除事件处理程序,我只需删除代码并保存。如果没有这种自动行为,我需要:删除事件块,从接口部分删除它的声明,对 DFM 进行更改,以便 Delphi 注意到事件不再存在,遭受许多错误消息告诉我事件处理程序不再存在,需要从组件中删除。我的“虚拟”代码也短了 两倍!我只写;
  • 忘了提及:这种自动行为使您免于删除 useles 事件处理程序的麻烦对象检查器中的事件。单张; 是一个公平的价格,恕我直言。
  • 或者只写begin ; end;,这涉及更少的打字;)
【解决方案3】:

有没有办法防止IDE删除函数/ 保存空体的程序?

IDE 中没有禁用此行为的选项。

【讨论】:

  • 如果有的话,它永远不会进入 D7。
  • +1 完全同意 Rufo 爵士的观点,这个答案很适合这个问题。
猜你喜欢
  • 1970-01-01
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多