非可视元件:
由TComponent继承下来,但不是从Control继承下来比如:
设计期间在窗体上放置一个PopupMenu1
在运行期间获取其放置坐标(Left,Top)

解决方案 »

  1.   

    ide是可以 获取的 移动时候 有hit提示。
    hook获取 哈哈。。ide接口  tools api里应该有方法
      

  2.   

    RTTI或者给每种类型的组件作一个LocationSetter #- -
      

  3.   


    var
     ALeft,ATop:Integer;
    begin
     ALeft :=LongRec(PopupMenu1.DesignInfo).Lo;
     ATop := LongRec(PopupMenu1.DesignInfo).Hi;
    end;
      

  4.   

    wywry正确type
      TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)
      private
    //...
        procedure ReadLeft(Reader: TReader);
        procedure ReadTop(Reader: TReader);
        procedure WriteLeft(Writer: TWriter);
        procedure WriteTop(Writer: TWriter);
    //...
      end;procedure TComponent.WriteLeft(Writer: TWriter);
    begin
      Writer.WriteInteger(LongRec(FDesignInfo).Lo);
    end;procedure TComponent.WriteTop(Writer: TWriter);
    begin
      Writer.WriteInteger(LongRec(FDesignInfo).Hi);
    end;总结:这个问题告诉我们,解决VCL问题,最好途径就是分析VCL代码。