如果程序现在正在执行a事件,timer事件激活了,需要去处理b事件。
程序是怎么运行呢?
是先处理完a事件,再去处理b事件
暂停a事件,先去处理b事件,处理完b,再回来处理a事件。
还是a、b事件同时处理?
程序是怎么运行呢?
是先处理完a事件,再去处理b事件
暂停a事件,先去处理b事件,处理完b,再回来处理a事件。
还是a、b事件同时处理?
解决方案 »
- 急!!!excel中设置输入数据后按F9进行计算,请问如何在DELPHI中进行控制?
- 急问ehlib3.4的安装
- 怎样读取webbrowser中正在显示的页面URL?
- [讨论]取密码框文本
- //请帮我看看这个错误提示出错在什么地方,在修改别人的程序,
- 请问怎么把checklistbox内的字段动态的添加倒库里面,就是一个table的字段里?
- 用delphi做COM组件,用于ASP程序调用,请高手指典
- 一个delphi中调用存储过程的问题?
- 出售源代码!!!!!!!
- listview1.Items[s].Caption;为什么出错,该怎样写?
- delphi TZIP 控件压缩文件
- Delphi中StringGrid控件问题请教,求指导!
如 Button.OnClick执行时,是不会触发OnTimer的,除非在OnClick中执行了Application.ProcessMessages或者其他等同的执行(注意如果OnClick中有执行FormXX.ShowModule不在此范围内)
Form1: TForm1;
k: Integer;
Ti: TTimer;
implementation{$R *.dfm}procedure Tform1.tionTimer(sender: Tobject);
begin
Inc(k);
Button1.Caption := IntToStr(k);
if k > 20 then
Ti.Enabled:=False ;
end;procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
Ti := TTimer.Create(self);
Ti.OnTimer := tionTimer;
Ti.Interval := 1000;
Ti.Enabled := False;
for i := 1 to 10 do
begin
Sleep(1000);
Button2.Caption := IntToStr(i);
if i > 5 then
Ti.Enabled := True;
end;
end;
var
k: Integer;
Ti: TTimer;procedure Tform1.tionTimer(sender: Tobject);
begin
Inc(k);
Button1.Caption := IntToStr(k);
if k > 20 then
Ti.Enabled := False;
end;procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
if not Assigned(ti) then
begin
Ti := TTimer.Create(self);
Ti.OnTimer := tionTimer;
Ti.Interval := 1000;
Ti.Enabled := False;
for i := 1 to 10 do
begin
Sleep(1000);
Button2.Caption := IntToStr(i);
if i > 5 then
Ti.Enabled := True;
end;
end;
end;