c:\1目录下有若干JPG文件,现在想在SCROLBOX里动态创建PANEL,有多少个JPG文件创建多少个PAENL,当一行排5个排满后,自动换到下一行创建PANEL,PANEL之间保持一定间隔,第二行满5个后到第3行以此类推。
如下面所示:
Panel1   panel2  panel3  panel4   panel5 panel6   panel7  panel8  panel9   panel10......

解决方案 »

  1.   

    i,x,y:integer;
      x :=0; y := 0;  
      for i := 1 to panel个数 do
      begin
        if (i mod 每行个数) = 0 then 
        begin
            y := y + panel.height + 10;
            x := 0;
        end;
        
        动态创建
        panel.left := x;
        panel.top := y;
        
        x := x + panel.width
      end;
      

  2.   

    用ListView自画不好吗?这样做浪费大量GDI资源
      

  3.   

    在form1上加组件Button1和ScrollBox1procedure TForm1.Button1Click(Sender: TObject);
    var
    Panel:array[1..100] of TPanel;
    i:integer;
    begin
        for i:=1 to 100 do
            begin
                Panel[i]:=TPanel.Create(self);
                Panel[i].Parent:=ScrollBox1;
                Panel[i].Height:=50;
                Panel[i].width:=50;
                Panel[i].Visible:=true;
                if i=1 then
                      begin
                          Panel[i].top:=20;
                          Panel[i].left:=20;
                      end
                  else
                      begin
                          if i mod 5=1 then
                              begin
                                Panel[i].left:=Panel[1].left;
                                Panel[i].top:=Panel[i-1].top+Panel[i-1].height+50;
                              end
                          else
                              begin
                                Panel[i].left:=Panel[i-1].left+Panel[i-1].width+50;
                                Panel[i].top:=Panel[i-1].top;
                              end;
                      end;        end;
    end;这段代码生成100个panel组件,每5行一排
      

  4.   

    给个不行的理由?至少我见过的ACDSee什么的都是用ListView~~~
      

  5.   

    谢谢: sxtdxvb(大傻瓜) (、