if btn_1.enabled then
begin
btn_1.enabled := false;
sleep(2000);
FormMain.caption :='1';
sleep(2000);
FormMain.caption :='2';
btn_1.enabled := true;
end;
begin
btn_1.enabled := false;
sleep(2000);
FormMain.caption :='1';
sleep(2000);
FormMain.caption :='2';
btn_1.enabled := true;
end;
b:=true;
func onclick()
begin
if not b then exit;
...
b:=false;
end;
btn_1.btn_1onclick(send:Tobject);
begin
btn_1.onclick := nil;
FormMain.caption :='1';
FormMain.caption :='2';
btn_1.onclick := btnonclick;
end;
procedure btn_1.btn_1onclick(send:Tobject);
begin
btn_1.onclick := nil;
FormMain.caption :='1';
FormMain.caption :='2';
btn_1.onclick := btnonclick;
end;
begin
....
Button.Enabled := False;
end;
procedure TFormMain.btn_1Click(Sender: TObject);
begin
if FiLock = 0 then begin
Inc(FiLock);
btn_1.Enabled := False;
try
btn_1.onclick := nil;
sleep(1000);
FormMain.caption :='1';
sleep(1000);
FormMain.caption :='2';
fianlly
Dec(FiLock);
end;
end;
end;procedure TFormMain.FormCreate(Sender: TObject);
begin
FiLock := 0;
end;
///
if button1.tag=1 then exit;
button1.tag:=;
....
代的代码
end;
当时,如果onclik事件执行的时间足够长,在button变灰的时间内鼠标单击的次数足够多,那么,这招也是不管用的,可能唯一的办法是退出onclick事件的时候,清空消息队列,可是这应该怎么做呢,欢迎大家继续讨论。
Caption := Caption +' Dis-';
Caption := Caption +'1';
sleep(2000);
Application.ProcessMessage;
Caption := Caption +'2';
sleep(2000);
Application.ProcessMessage;
Caption := Caption +'3';
sleep(2000);
Application.ProcessMessage;
Caption := Caption +'-En ';
btn_1.enabled := true;
回答的人叫:Humberto Jemma (Brazil巴西)
我回成都也会试一下
BlockInput(true); //<-------
sleep(2000);
FormMain.caption :='1';
sleep(2000);
FormMain.caption :='2';
btn_1.enabled := true;
BlockInput(false); //<-------
1、application.processmessage的用法(看来对delphi的消息处理机制没有去了解过)
2、至于blockinput(这可是带星好的大大给的)我也不知道用,等下去看帮助去。