6
A
回答
11
您需要在所有代码完成执行后销毁该按钮。这样做的标准方法是将一个用户定义的消息发布到表单上,并为表单提供一个消息方法来解释它。例如:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WM_KILLCONTROL = WM_USER + 1;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure KillControl(var message: TMessage); message WM_KILLCONTROL;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(self.Handle, WM_KILLCONTROL, 0, integer(Button1))
end;
procedure TForm1.KillControl(var message: TMessage);
var
control: TControl;
begin
control := TObject(message.LParam) as TControl;
assert(control.Owner = self);
control.Free;
end;
end.
这工作,因为消息被放入Windows的消息队列和它(包括该按钮当前响应点击消息)处理完毕不出来,直到一切。
0
您可以改为在OnClick事件中启用计时器,然后先写入Timer事件以禁用计时器,然后从OnClick事件中调用当前正在调用的过程。设置定时器禁用并且间隔时间较短。
相关问题
- 1. 销毁对象
- 2. 对象销毁
- 3. C++销毁对象
- 4. 销毁停用对象
- 5. 在X ++中销毁对象
- 6. 销毁对象的::地图
- 7. 销毁对象的错误
- 8. 销毁Ember.js中的对象
- 9. 在所有对象被销毁后调用PHP函数
- 10. Rails对象生命周期 - 交叉事务对象的创建和销毁
- 11. 如何销毁PDFJS对象?
- 12. 如何销毁java对象?
- 13. RSpec与Factory_girl - 销毁对象
- 14. Python:全局对象销毁
- 15. 销毁Oracle PLSQL对象
- 16. 何时销毁对象?
- 17. 销毁主类对象
- 18. 销毁成员对象
- 19. 摧毁主要对象时销毁嵌入对象
- 20. Unity2d - 销毁对象使用销毁(gameObject)//它会销毁与脚本连接的对象
- 21. 在我完成使用这个对象之前调用destructor来销毁对象
- 22. 使用clipboard.js如何在创建新对象之前销毁其所有对象?
- 23. VCL事件在销毁期间
- 24. 在添加新对象时销毁向量中的对象
- 25. 如何在创建新的对象之前销毁所有childs对象?
- 26. JavaScript对象销毁的事件处理程序
- 27. 使用javascript销毁闪存对象
- 28. 使用javascript销毁嵌入对象
- 29. Perl不会在对象销毁时调用DESTROY的情况?
- 30. 在C#中销毁结构对象?
这很好,谢谢! 我试图做一个“SendMessage”,但它不起作用,所以我放弃了这种方法。 “PostMessage”做到了! – Pmmlr 2010-04-20 17:41:17
@Pmmlr:是的。 SendMessage会立即处理消息,而PostMessage会将其发布到消息队列中,以便在处理之前必须等待。 – 2010-04-20 18:11:28
@Pmmlr:自从Delphi 1:'PostMessage(Handle,CM_RELEASE,0,0);''它与'procedure TForm.CMRelease'一起工作的过程TForm.Release'一样, ',知道'PostMessage'和'SendMessage'之间的区别很重要:这就是它工作的原因。这个问题更详细地解释PostMessage:http://stackoverflow.com/questions/2551435/postmessage-tutorial – 2010-04-20 18:43:59