拖动label1,当它的区域与label2有重叠时,如何判断重叠了?

解决方案 »

  1.   

    当然是.exe运行的时候,另外,我没有把问题说清楚,就是我们假设不知道label2怎么获得,只知道form里存在label2,我们只能根据label的条件来判断是否有重叠...有点罗嗦哈.
      

  2.   

    不能使用Label2的Left和Top属性值????俺不会。您等高人吧。
      

  3.   


    var 
       i: integer;
       AForm: TForm;
    begin
      for i := 0 to AForm.ComponentCount -1 do
      begin
        if AForm.Components[i].ClassName = 'TLabel' then
        begin
           //在这里判断
           AForm.Components[i].Top ....  
        end;
      end;
    end;
    分~~~~
      

  4.   

    var
      i, j: integer;
      l1, l2: TLabel;
    begin
      for i := 0 to ComponentCount - 1 do
        if Components[i] is TLabel then
          begin
            for j := i + 1 to ComponentCount - 1 do
              if Components[j] is TLabel then
                begin
                  l1 := TLabel(Components[i]);
                  l2 := TLabel(Components[j]);              if (l1.Parent = l2.Parent) and (PtInRect(l1.BoundsRect, l2.BoundsRect.TopLeft) or PtInRect(l1.BoundsRect, l2.BoundsRect.BottomRight)) then
                    begin
                      ShowMessage(l1.Name + ',' + l2.Name);
                    end;
                end;
          end;