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