在类TApplication中的Idle方法的含义是什么?(30分)

  • 主题发起人 主题发起人 莫大先生
  • 开始时间 开始时间

莫大先生

Unregistered / Unconfirmed
GUEST, unregistred user!
空闲的意思,
在Application.OnIdle事件中写代码就相当与在一个
间隔很少的定时器里写代码一样,也就是说应用程序空闲时就不停的触发OnIdle事件。
你试一试就知道了。
忠告:在OnIdle中不要作太多复杂的事情,那样会影响你程序的执行。
 
应用程序闲置时做的事情。比如要应用程序的窗口始终在所有窗口(包括已有的顶层窗口)的最前面,可以这样写:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure appOnIdle(Sender: TObject; var Done: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.appOnIdle(Sender: TObject; var Done: Boolean);
begin
form1.FormStyle:=fsStayOnTop;
form1.BringToFront;
setForegroundWindow(handle);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.FormStyle:=fsStayOnTop;
application.OnIdle:=appOnIdle;

end;

end.
 
na它的作用我知道了,但是Delphi在TApplication中定义这样一个方法的意图是什么呢?
 
这个应该是从MFC过来的吧,因为CPU为线程分配时候片的时候不一定都有事做,所以没事做的就触发IDLE事件了,应该不是DELPHI自己搞的。
 
这就是Delphi的巧妙之处,它对TApplication,TCanvas,TScreen构建大大加速了我
们的开发速度,简直就是巧夺天工.
什么MFC过来的?!,我倒是第一次听说!
看看TApplication源代码不就一清二楚了.
 
纯属个人臆测,兄台不必激动:)
其实对于DELPHI来说,要加个事件简直易如反掌了。
 
接受答案了.
 
后退
顶部