我做一个程序,需要判断焦点是否聚焦在文本框内,然后做不同的事。。
   大家有没什么好方法????

解决方案 »

  1.   

    if Edit1.Focused then
      //do something
    else
      //do something
      

  2.   

    if Edit1.Focused then showmessage('Edit1');
      

  3.   

    问题是这样的,我的文本框是随机的,不一定是edit1。
    是不是可以判断:control is TEdit 之类的??
    我要判断在任何一个窗体内,用户的鼠标是否定位在任何一个文本框内,如果不是:
    我要弹出另外一个窗口,如果是:我要在文本框里面输入值
      

  4.   

    if (Self.ActiveControl is TEdit) then
    begin
      //....
    end;
      

  5.   

    if Edit1.Focused then showmessage('焦点');
      

  6.   

    “我想这样应该可以,我遍历当前窗口的所有控件,如果是文本框,则判断他是否聚焦,
    如果聚焦则执行相应的动作,否则执行另外的动作。”var i:integer;    for i:=0 to self.ComponentCount-1 do //遍历当前窗口的所有控件
        begin
            if Self.Components[i].ClassType=TEdit then //如果是文本框
            begin            
                if (TEdit(Self.Components[i]).Focused then    //则判断他是否聚焦            
                begin
                    聚焦则执行相应的动作
                end
                else
                begin
                   否则执行另外的动作
                end;
            end;
        end;
        
      

  7.   

    var i:integer;    for i:=0 to self.ComponentCount-1 do //遍历当前窗口的所有控件
        begin
            if Self.Components[i].ClassType=TEdit then //如果是文本框
            begin            
                if (TEdit(Self.Components[i]).Focused then    //则判断他是否聚焦            
                begin
                    聚焦则执行相应的动作
                end
                else
                begin
                   否则执行另外的动作
                end;
            end;
        end;
        
      

  8.   

    上面的方法是可以,不过觉得效率太低。
    因为我的系统有很多窗体,那样我不是要在每个窗体都加上楼上里面几位那段代码。
    self.ComponentCout 遍历的是当前窗口的控件,但好象并不是当前聚焦的控件哦?
      

  9.   

    拜托,楼上的楼上有没有搞错,直接ctrl+c ctrl+v我的代码啊?
    楼上的,我知道效率不高,我只是根据你的需求写出代码而已,呵呵
    不过话说回来,效率不会低很多的
    如果你的edit命名是有规律的,比如edit1 edit2 ...edit10,下面的代码可以检索的少一些:
    for i := 1 to 10 do
    begin    
        if TEdit(FindComponent('Edit' + IntToStr(i))).Focused then
        begin
            聚焦则执行相应的动作
        end
        else
        begin
            否则执行另外的动作
        end;
    end;
      

  10.   

    窗体多的话可以相互引用
    然后
    with 引用的窗体 do
     begin
         再调用上面的循环
     end;