例如:有2个panel,大小和位置都一样,一个叠在另一个上面,如何用程序判断当前在上面的是哪一个?
主要是想完成以下功能:if panel1 on top  then ....if panel2 on top  then ....换别的控件是否也一样控制?如dbgrid等

解决方案 »

  1.   

    我也遇到同样的问题, 不过我是在使用前强制执行了: control1.BringToFront/control2.BringToFront
      

  2.   

    如果是form,有个formstyle属性 stayontop
      

  3.   

    TWinControl有一个数组属性叫Controls,排在越后面的控件就越在顶层。比如你要找一个窗体中最顶层的控件,就这样:
    Form.Controls[Forms.ControlCount - 1]其他也相似,明白了吗,只要你找到你的控件在Controls中的位置,就可以知道那个在顶层了。
      

  4.   

    for i := ControlCount - 1 downto 0 do
      if not (Controls[i] is TWinControl) then Break
      else if Controls[i] = Panel1 then
        ShowMessage('Panel1 is on top')
      else if Controls[i] = Panel2 then
        ShowMessage('Panel2 is on top');