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