当我点击菜单或按下相应的加速按钮的时候,菜单或按钮总是过半天才响应,不知这个问题怎么回事?
问题的关键在于:
每次我按下N4菜单或相应按钮,按下去后,菜单项和按钮一直都处于被按下状态,一直要等到那个双重循环结束之后菜单和按钮才弹起来,不知何故?有人说是串口问题,有人说是线程问题,究竟是何问题?这是我的代码:
procedure TForm1.N4Click(Sender: TObject); //N4为菜单
begin
if pagecontrol1.ActivePage=Tabsheet2 thenbegin
//tabsheet1.Enabled:=false;
N4.Enabled:=false; //该菜单被单击后就不可用,除非完成操作
toolButton5.Enabled:=false; //菜单对应的按钮
N5.enabled:=true; //N4菜单被单击后可用
toolButton6.Enabled:=true; //N5对应的按钮
comm1.StartComm; //打开串口
sleep(20);
qbuf[1]:=byte($01);
qbuf[2]:=byte($01);
comm1.writecommdata(@sbuf,2); //初始化串口
sleep(100);if checkbox7.Checked then
begin
for i:=0 to bloopIz do
begin
for j:=0 to bloopId do
begin
//循环送数据到串口
end;
end;
end;end;
end;
问题的关键在于:
每次我按下N4菜单或相应按钮,按下去后,菜单项和按钮一直都处于被按下状态,一直要等到那个双重循环结束之后菜单和按钮才弹起来,不知何故?有人说是串口问题,有人说是线程问题,究竟是何问题?这是我的代码:
procedure TForm1.N4Click(Sender: TObject); //N4为菜单
begin
if pagecontrol1.ActivePage=Tabsheet2 thenbegin
//tabsheet1.Enabled:=false;
N4.Enabled:=false; //该菜单被单击后就不可用,除非完成操作
toolButton5.Enabled:=false; //菜单对应的按钮
N5.enabled:=true; //N4菜单被单击后可用
toolButton6.Enabled:=true; //N5对应的按钮
comm1.StartComm; //打开串口
sleep(20);
qbuf[1]:=byte($01);
qbuf[2]:=byte($01);
comm1.writecommdata(@sbuf,2); //初始化串口
sleep(100);if checkbox7.Checked then
begin
for i:=0 to bloopIz do
begin
for j:=0 to bloopId do
begin
//循环送数据到串口
end;
end;
end;end;
end;
测试,你可在SPEEDBUTTON 的ONCLICK中写入
sleep(4000);
你就会看到要过了4秒后,它才会弹起
begin
application.processmessage; //增加
if pagecontrol1.ActivePage=Tabsheet2 thenbegin
procedure Delay(AInterval: Integer);
var
I: Integer;
begin
for I := 0 to AInterval do Application.ProcessMesssage;
end;