我们现在需要完成的功能是:在循环中,程序执行到某一处时,等待键盘响应,如果没有按下space的话,希望程序能够停止(保持当前状态),直到按下space键后程序结束本次循环并开始下次循环。 我们在mainform里设置了onkeypress事件,可以完成键盘响应,但是无法继续进行下次循环。
请问:这个功能能否可用单线程实现?? 我们又改用多线程,把循环函数放到新的线程单元中(onkeypress必须放到mainform中才会有响应),如果要用这种方法的话,应该怎么样实现啊??
请问:这个功能能否可用单线程实现?? 我们又改用多线程,把循环函数放到新的线程单元中(onkeypress必须放到mainform中才会有响应),如果要用这种方法的话,应该怎么样实现啊??
简化一下程序就是
procedure Tmainform.test;
begin
...
for i:=0 to 3 do
begin
...
mainform.Image1.Visible:=true;
//在此处响应keydown让image1不可见,怎么实现?
end;
...
end;procedure TMainForm.KeyDown(Sender: TObject; var Key: Char);
begin
if(key=key_space) then
begin
...
end;
end;
procedure myKeypress(var Message: TWMChar);message WM_CHAR;
procedure Tmainform.test;
begin
...
for i:=0 to 3 do
begin
...
mainform.Image1.Visible:=true; while IsVisible do
application.processmessage;
end;
...
end;procedure TMainForm.KeyDown(Sender: TObject; var Key: Char);
begin
if(key=key_space) then
begin
IsVisible:= false;
end;
end;应该可以了
这个语句是起什么作用的啊