我在写模板,那时还不知道具体的Edit名称!

解决方案 »

  1.   

    for i:=0 to ComponentCount-1 do
      if (Components[i] is TEdit) AND ((Components[i] as TEdit).TabOrder = 0) then
        ((Components[i] as TEdit).SetFocus;
      

  2.   

    如果taborder=0,其应该是自动获得焦点
      

  3.   

    windindance(风舞轻扬) 的建议可以采用,有没有更简单的方法
    假如我Taborder=0的控件类型不确定呢?TEdit,TComboBox,等等
    (我做的是模板,那时是不知道什么控件类型的)
      

  4.   

    回复: linux_withwind(随风而去)
    因为我想在模板中实现,重新填写的功能,那是焦点可能已经在别的控件了,我想回到第一个不确定类型的输入控件中,怎办?谢谢
      

  5.   

    var
      wctrl:TWinControl;
    begin
    for i:=0 to pred(ComponentCount) do begin
      if not (Components[i] is TWinControl) then continue;
      wctrl:=TWinControl(Components[i]);
      if wctrl.TabOrder<>DesireTabOrder then continue;
      wctrl.SetFocus;
      break;
    end;
    end;
      

  6.   

    实际上,TabOrder=0的TEdit本身就自动取得输入焦点,但要注意在拥有父容器时,必须是父容器的TabOrder也是0才可以,处理办法:1、父容器TabOrder=0;
    2、父容器是窗体的ActiveControl。
    注意:以上条件存立的前提必须是“以上所述各控件的TabStop=True”