窗体上有若干EDIT、MEMO、COMBOX,窗体启动后怎样将输入焦点固定到某一个控件上?

解决方案 »

  1.   

    在form的onshow中
    edit1.setfocus;//其他控件类同
      

  2.   

    楼上够快。放在 Form 的 OnCreate 事件中也可以Memo1.SetFocus;
      

  3.   

    oncreate里不行吧,窗体还invisible呢cybercake(数字蛋糕) 的方法好
      

  4.   

    要说行到是行的,就是不好!
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Try
        Edit2.SetFocus;
      Except  end;
    end;楼主用 cybercake(数字蛋糕) 或 firetoucher(风焱) 的方法
      

  5.   

    安全一点还可以这样procedure TForm1.FormCreate(Sender: TObject);
    begin
      if Edit1.CanFocus then
        Edit1.SetFocus;
    end;
      

  6.   

    放在onActive中也行呀
    if Edit1.CanFocus then
        Edit1.SetFocus;
      

  7.   

    在窗体显示事件中:
    控件名.setfocus;
    form1.refresh;
      

  8.   

    在CREATE事件中是不行的,因为窗体尚不可见,不能用SETFOCUS
    综上所述,三种方法可以实现
    1.将FORM的ACTIVECONTROL设为要定焦点的控件
    2.将要定焦点的控件的TabOrder设为0;
    3.在FORM的OnShow中最后加上
        if 控件名.CanFocus then 
           控件名.SetFocus
      

  9.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Try
       你自己需要固定的控件.setfocus;
       Except  end;
    end;
      

  10.   

    同意cybercake(数字蛋糕)的方法, 方便快捷.
    Screen.ActiveControl还可以反过来判断哪个对象获得了焦点, 这要比在每个组件的OnEnter加入代码方便的多.
      

  11.   

    我是菜鸟,什么都写在OnCreate 里, OnCreat 不行就 OnShow, OnShow 不行就 OnActivate
    如果都不行就上CSDN啦
      

  12.   

    OnCreate OnShow OnActivate注意一下发生时序即可
      

  13.   

    5555,动作都那么快啊。我一般都放在OnActivate里的。我是个菜鸟,请大家多指教啊。
      

  14.   

    Alexs(木头) 说得好,在OnShow中就可以了,呵呵一般自己要手动创建的对象在OnCreate中比较好而对于Form的私有变量,或其中的控件设置,在OnShow中比较好,没有特别的原因,这样做符合习惯!呵呵
      

  15.   

    还有可以把你要设的哪个控件的TabOrder设为最小0,不就OK了吗
      

  16.   

    OnShow等事件中
    控件.setFocus