我想写下面这个效果,不知道谁有汉有试过,能指点一下万分感谢!效果:在form1上点击button1,在同窗体的一个panel上显示从一个文本里提取动态的生成的按钮的caption,要求生成的动态按钮大小一样,间隔一样,而且如果按钮过多,这个panel显示不够可以翻页,这种效果该怎么做?我以前在ASP上做很简单的。我说清楚一点:
1.从文本里按规律提取生成按钮的caption及些caption的一个属性.(这个文本该怎么设计)2.点击button1时,在panel上动态生成这些带caption的按钮(其中有一难点,如果此panel一排只能摆6个按钮,下六个又从下一行起,它们的top和left该怎么设置)。3.如果按钮过多,panel一页不够显示,怎么才能翻页显示。(我在panel旁边放了两个label,写上“上一页”和“下一页”,如果这样麻烦,用pagecontrol是否可以实现)

解决方案 »

  1.   

    1. 不明白你的意思
    2. for i:=0 to 5 do begin
        button.top := i*height;
        for j:=0 to 6 do begin
           button.left := j*width;
        end;
       end;3.不要用Panel, 用ScrollBox
      

  2.   

    大家好,能帮帮我吗?现在第一问和第二问我自己想了好久,基本上解决了,代码如下:procedure TForm1.Button1Click(Sender: TObject);
    var
      i, m ,n: integer;
      t, l : integer;
    begin
      t := 0; l := 0; n :=1;
      for i := 1 to 50 do
      begin
        with TButton.Create(self) do
        begin
          Caption := IntToStr(i);
          Parent := Panel1;
          Top := t;
          Left := l;
          l := l + 75;
          m := i div 6;
          if i = 6 then
          begin
            t := t + 25;
            l := 0;
          end;
          if (m <> 1) and (m>1) and (m<>n) then
          begin
            t := t + 25;
            l := 0;
            n := n+1;
          end;
        end;
      end;
    end;
    我现在想解决的就是第三问,如果我动态的提取100个按钮,在panel1因为美观只想显示三排,每排6个,这样只能显示18个,还有的就要靠设置翻页了,如果再设一个botton2和botton3,一个控制显示后18个,一个控制显示前18个,这个能实现吗?ASP上很简单的,DEPHI我刚学,能帮帮吗?
      

  3.   

    这个简单嘛......建议你先生成所有的BUTTON,用一个集合类TLIST或TCOLLECTION类存储那些BUTTON的对象指针,然后,你规定自己一个页显示18个,就依次取。当然,你需要多设置两个标记,一个标记当前BUTTON末尾位置,一个标记是否前进或后退。这样就很容易符合你的要求啦!关键就是用集合类存储所有对象,翻页标记,当前最后或者最前一个BUTTON的位置标记。
    -------------
    轻轻松松,楼猪,给分哦
    呵呵..
      

  4.   

    楼主的,非常感谢你的方法,但是我的DELPHI不是很精通,能给个代码看看吗,大家也都来帮帮忙,我发了两个贴子问了一个多星期了
      

  5.   

    第三个问题,用滚动条不行吗?不要用Tpanel作为button的容器,用TScrollBox不就可以了吗。
      

  6.   

    回楼主, 用ScrollBox不会影响美观, 你可以隐藏滚动条
    在旁边自己设计两个按钮在按钮里控制ScrollBox上下滚动,就可以了
      

  7.   

    ScrollBox可以在旁边设计两个按钮吗?有没有同类的例子,不知道能不能点击时直接跳过3行,效果和翻页是一样的,如果可以话,可以试试
      

  8.   

    用ScrollBox还用翻页按钮作甚?呵呵
      

  9.   

    不要说是3行了,要多少行都行ScrollBox1.ScrollBy(0,100); // 滚动100像素
    ScrollBox1.ScrollBy(0,-100); // 反向滚动100像素