为什么我的 Delphi 代码没有按顺序执行?

问题描述

我正在创建一个程序,我需要显示一个图像,然后在再次允许输入之前阻止输入几秒钟。我遇到的问题是 Delphi 没有按顺序运行代码,而是在执行图像命令之前执行 Sleep() 命令。我之前在显示消息之前对视频使用 Sleep() 时遇到过这个问题。

代码如下:

procedure TtForm.WindowsMediaPlayer2Click(ASender: TObject;
  nButton,nShiftState: SmallInt; fX,fY: Integer);                          
Var                                                                            
  buttonSelected: Integer;                                                  
begin                                                                     
  buttonSelected := MessageDlg('Well done Monkey!-_-',mtError,mbOKCancel,0);                                                            
  if buttonSelected = mrOK then                                              
  begin            
    Pages.Visible := False;                                                
    WindowsMediaPlayer2.Visible := False;                                      
    imgEroor.BringToFront;                                                  
    BorderStyle := bsNone;                                                   
    WindowState := wsMaximized;                                             
    imgEroor.Top := 0;                                                       
    imgEroor.Left := 0;                                                         
                                                                              
    imgEroor.Width := Screen.Width;                                                 
    imgEroor.Height := Screen.Height;                                       
    imgEroor.BringToFront;                                               
                                                                        
    BlockInput(True);                                             
    Sleep(10000);                                                         
    BlockInput(False);                                                    
  end;
                                                                   
  if buttonSelected = mrCancel then                                                    
  begin                                           
    Pages.Visible := False;                                               
    WindowsMediaPlayer2.Visible := False;                                   
    imgEroor.BringToFront;                                                 
    BorderStyle := bsNone;                                                      
    WindowState := wsMaximized;                                                
    imgEroor.Top := 0;                                                     
    imgEroor.Left := 0;                                                        
                                                                              
    imgEroor.Width := Screen.Width;                                         
    imgEroor.Height := Screen.Height;                                          
    imgEroor.BringToFront;                                                     
                                                                            
    BlockInput(True);                                                   
    Sleep(10000);                                                         
    BlockInput(False);                                                    
  end;                                                                    
end;                                                                          

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)