在1个panel上动态创建n个Image,在panel右下脚显示n个控件,使鼠标移动到控件上时,显示对应的图片,问题是很多控件被image覆盖了,用SpeedButton也不行,2个以上图片时是不能显示全部的SpeedButton,哪怕你后创建它,总是能被Image覆盖1、2个。用StaticText呢不能像label那样透明,请教各位大侠了,有什么好办法解决???

解决方案 »

  1.   


    {一次性所有SpeedButton都显示在图片之上}
    var
    i:integer;
    begin
    for i := 0 to panel1.ControlCount - 1 do
        begin
            if(panel1.Controls[i] is TSpeedButton)
            (panel1.Controls[i] as TSpeedButton).BringToFront;      
        end; 
    end;
    {单独的}
    SpeedButton1.BringToFront;
      

  2.   


    {一次性所有SpeedButton都显示在图片之上}
    var
    i:integer;
    begin
    for i := 0 to panel1.ControlCount - 1 do
        begin
            if(panel1.Controls[i] is TSpeedButton) then 
            (panel1.Controls[i] as TSpeedButton).BringToFront;      
        end; 
    end;
    {单独的}
    SpeedButton1.BringToFront;
      

  3.   

    开始我是这么写的,把imgage和SpeedButton在2个循环中一起建立,但是不管怎么BringToFront,只能显示最后一个SpeedButton,琢磨前一个按钮是被image给盖住了,于是根据GDTOPONE 的提示,将代码分成2块写
      for i:=0 to 99 do
        for j:= 0 to 3 do
        begin
         Image[h] := TImage.Create(nil);
         Image[h].Parent := panel[i];
         .
         .
         SpeedButton[h] := TSpeedButton.Create(nil);
         SpeedButton[h].Parent := panel[i];
         SpeedButton[h].BringToFront;
       end;//-------------------------------------------------------------------
      for i:=0 to 99 do
        for j:= 0 to 3 do
        begin
         Image[h] := TImage.Create(nil);
         Image[h].Parent := panel[i];   end;   for i:=0 to 99 do
        for j:= 0 to 3 do
        begin
         SpeedButton[h] := TSpeedButton.Create(nil);
         SpeedButton[h].Parent := panel[i];
         SpeedButton[h].BringToFront;
       end;这样先建立所有的image,在建立按钮就ok了!
    再次感谢GDTOPONE和S_Slan 的关注
      

  4.   

    分开创建后就用
    for i := 0 to panel1.ControlCount - 1 do
        begin
            if(panel1.Controls[i] is TSpeedButton) then 
            (panel1.Controls[i] as TSpeedButton).BringToFront;      
        end; 
    end;只需在创建时SpeedButton[h].BringToFront; 就可以了