我想写下面这个效果,不知道谁有汉有试过,能指点一下万分感谢!效果:在form1上点击button1,在同窗体的一个pannel上显示从一个文本里提取动态的按钮的caption,要求生成的动态按钮大小一样,间隔一样,而且如果按钮过多,这个pannel显示不够可以翻页,这种效果该怎么做?我以前在ASP上做很简单的。我说清楚一点:
1.从文本里按规律提取caption(这个文本该怎么设计)
2.点击button1时,在pannel上动态生成这些带caption的按钮。
3.如果按钮过多,pannel上不够显示,可以翻页(我在旁边放了两个label,写上“上一页”和“下一页”)

解决方案 »

  1.   

    //从文本里按规律提取caption(这个文本该怎么设计)
    可以用INI
    [caption]
    1=btn1caption
    2=btn2caption
    .
    .
    .
    n=btnncaption
      

  2.   

    pannel是没有翻页功能的,你可以自动生成按钮,显示的效果会和翻页相同。要排列按钮的时候,只能是你一个一个的计算位置。不然显示会有问题。这样做应该不难。
      

  3.   

    我這裡實現了動態生成,但還沒有翻頁功能不過我建議樓主用PageControl之類的控件作父控件,因為Panel不具有翻頁功能var
      iLeft, iTop, iHeight, iWidth: Integer;procedure TForm1.Button1Click(Sender: TObject);
    var
      tmp: TButton;
    begin
      tmp := TButton.Create(Self);
      tmp.Parent := Notebook1;
      tmp.Left := iLeft;
      tmp.Top := iTop;
      tmp.Caption := '點我呀';
      //在此賦值不同的Caption
      if iLeft + tmp.Width > Notebook1.Width then Inc(iLeft, tmp.Width)
      else
      begin
        iLeft := 0;
        Inc(iTop, tmp.Height);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      iLeft := 0;
      iTop := 0;
    end;
      

  4.   

    我這裡實現了動態生成,但還沒有翻頁功能不過我建議樓主用PageControl之類的控件作父控件,因為Panel不具有翻頁功能var
      iLeft, iTop, iHeight, iWidth: Integer;procedure TForm1.Button1Click(Sender: TObject);
    var
      tmp: TButton;
    begin
      tmp := TButton.Create(Self);
      tmp.Parent := Notebook1;
      tmp.Left := iLeft;
      tmp.Top := iTop;
      tmp.Caption := '點我呀';
      //在此賦值不同的Caption
      if iLeft + tmp.Width > Notebook1.Width then Inc(iLeft, tmp.Width)
      else
      begin
        iLeft := 0;
        Inc(iTop, tmp.Height);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      iLeft := 0;
      iTop := 0;
    end;
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        procedure do_auto_create_click(Sender:TObject);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.do_auto_create_click(Sender:TObject);
    begin
      ShowMessage('hello auto button!');
    end;procedure TForm1.Button1Click(Sender: TObject);
    var btn:TButton;
    begin
      btn := TButton.Create(self);
      btn.Caption := 'auto created!';
      //self.ComponentCount := self.ComponentCount + 1;
      self.InsertControl(btn);
      btn.Left := 100;
      btn.Top := 100;
      btn.Visible := true;
      btn.OnClick := self.do_auto_create_click;
    end;end.
      

  6.   

    欢迎加入Borland 一线程序员,参与群里技术讨论!欢迎女孩子,也欢迎男孩子参与技术讨论!群号15154361
      

  7.   

    大家的问题我看了,的确认识了,不少,关于翻页,应该可以按条件设置这个banner一排显示几个,显示几排按钮,然后其他的不显示出来,点窗体上的另一个按钮再显示下一面,这样该怎么写