form上依次放置三个panel1、panel2、panel3,局部叠加,已经实现拖拉panel。现在问题是要如何实现单击中间panel2时,
panel2显示在中间,而不是BringToFront?各位大虾帮忙,看看有何思路。BringToFront,SendToBack两个panel时还好办,多于两个时,如何控制呢?

解决方案 »

  1.   

    类似网页或FLASH中层的效果么?
      

  2.   


    是的,现在要实现一个样式编辑器,panel当作层来显示
      

  3.   

    这里用taborder属性记录panel显示的次序level,backpanel为容器。selpanel为当前选中的panel
    但没达到我想要的效果
    大家看下,有何办法没有?
     iLevel:=selpanel.TabOrder;
      for i:=0 to backpanel.ControlCount-1 do
      begin
        if (backpanel.Controls[i] is TImagePanel) then
        begin
          //iTempLevel 对比对象的level   level值越小越靠上显示
          iTempLevel := TImagePanel(backpanel.Controls[i]).TabOrder;
          if iLevel < iTempLevel then
            selpanel.SendToBack
          else
            selpanel.BringToFront;
        end;
      end;
      

  4.   

    结合上panel的left,top属性可以不?
      

  5.   

    一旦实现拖拉,会莫明其妙地置顶,也就是bringtofront.哎。