页面上有一个Edit和一个按钮,在页面的create事件下有代码edit1.focused,但是运行时focus在Edit和按钮上交替出现,即第一次focus在Edit上,第二次打开focus就在按钮上,我想让focus一直在Edit上,写完数据后再到按钮上,该怎么做?

解决方案 »

  1.   

    在FormActive事件中写:
    Edit1.setfocuse 就可以了
      

  2.   

    WRONG!!!!
    我试过了,不管在哪里写Edit1.setfocus都会运行错误,Application.Run进行不下去!!
    还有,我在listbox写了procedure dbclick事件,但是根本就不运行!!这可怎么办?!这个小细节真折磨死人了!!
      

  3.   

    是不是你delphi有问题,我的怎么都没问题!
    FormActive
    FormShow
    都没问题!
      

  4.   

    你不要在Create中写就应该没问题的
      

  5.   

    在formshow过程中
    加入
    try 
     edit1.setfouse;
    except
    end;
      

  6.   

    现在可以正常运行了,但是问题还是没有解决!你们试试看,Form1上一个Button1,Form2上一个Edit1和一个Button1
    form1.button1.click:form2.show;
    form2.button1.click:form2.hide;
    form2.formshow:edit1.focus;
    运行时,点form1的按钮,form2出现,focus在edit1上,点form2.button1,在form1再点button1,这回focus就跑到button上了,交替出现,问题没有解决:(
    555......
      

  7.   

    天!这下子除了第一次打开页面时focus在edit上外,以后在打开focus就全是在button上了,跟没用效果一样!!怎么办?!
      

  8.   

    我加了label去测试,结果表明,formactive或formshow根本就没有执行!!!这和listbox里dblclick问题一样,难道这些事件都不能用吗?郁闷……
      

  9.   

    关键时在form2已经show的情况下,你再点form1的button按钮,才会这样,在form1的button按钮的onclick事件中添加如下代码试试
    if form2.visible=true then
    beign
      sendmessage(form2.handle,sw_restore,1,integer(true));
      form2.edit1.setfocused;
    end
    else
      form2.show;
      

  10.   

    把sendmessage(form2.handle,sw_restore,1,integer(true));改成showwindow(form2.Handle,sw_restore);
      

  11.   

    问题解决了!formshow不运行的原因是,在Objects Inspector中的Onshow事件没有选中formshow这个过程,现在行了,listbox的dblclick也可以了,万岁!谢谢大家!