我用Delphi做了个应用程序,现在想开发个模拟用户操作的程序。针对一个界面中有多个相同的控件,如有多个TEDIT(Name不同,显示的值也不同),系统好像无法进行区分,请高手指教。怎么区别这两个TEDIT?

解决方案 »

  1.   

    用name,或者标识不同的tag属性,或Handle
      

  2.   

    句柄肯定是不同的,另外就是Control ID,可以如下方法获得,另外这个ID似乎是不会变的,就是程序编译完成了就一直是这个ID.var
      id: Integer;
    begin
      //Edit1
      id := GetDlgCtrlID(Edit1.Handle);
      Edit1.Text := IntToStr(id);
      //Edit2
      id := GetDlgCtrlID(Edit2.Handle);
      Edit2.Text := IntToStr(id);
    end;
      

  3.   

    用TAG或者Name做不到吧,因为取不到控件的名字或者TAG,请指教。
    可以用句柄的哪些属性做区分呢?
      

  4.   

    假设这两个edit都在form1上,那么用如下语句求出第一个edit的句柄
    handle1:=FindWindowEx(form1.handle,0,'TEdit',nil);第二个edit的句柄就是:
    handle2:=GetWindow(handle1,GW_HWNDNEXT);同一个容器中的控件的顺序是固定的,所以用这个方法可以获取两个或多个同类控件的句柄。假设再有第三个edit,那么第三个句柄获取的语句为:handle3:=GetWindow(handle2,GW_HWNDNEXT); 以此类推
      

  5.   

    遍历,获得edit的句柄
    GetWindowRect获取位置,这个可以判断吧
      

  6.   

    panel可以直接这样用,但edit不可以.
      

  7.   

    xinxinshou2009
    感谢,好像您提供的方法可以。只是我没有去实践。