if jectcardflag = 1 then
begin
   idelfrm.Show;   
end;
if gHasBankCard=1 then
   EjectBankCard();
gHasPassInst := 0;
gHasICCard   := 0;
这样一段代码,我的目的是先将Idelfrm显示一下,然后再执行下面的代码.但现在是下面的那个函数执行完了,才显示Idlefrm.

解决方案 »

  1.   

    是代码执行太快了。用ShowModal;
      

  2.   

    照楼上所说的试了一下,还是不行啊.如果把
    if gHasBankCard=1 then
       EjectBankCard();
    注释掉,那IdelFrm能正常显示的.不注释掉的话,还是先执行了EjectBankCard,然后IdleFrm才显示出来.
      

  3.   

    加一句:if jectcardflag = 1 then
    begin
       idelfrm.Show;   
       Application.ProcessMessages;
    end;
      

  4.   

    Application.ProcessMessages;我以前也试过了,不行.
      

  5.   

    你怎么知道先执行后面的再Show的?
      

  6.   

    后面的执行了,有动作出来的啊,把读卡器里的卡弹出来,然后那个FROM才显示出来的.
      

  7.   

    那你把EjectBankCard()换成Sleep(10000)看看效果
      

  8.   

    1.将后面的放在Show中执行.
    2.
    if jectcardflag = 1 then
    begin
       idelfrm.Show;   
       PostMessage(发送一个自己定义的消息,处理消息函数中执行后面的代码);
    end;