程序如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure MypanelCreate(MachineNum:integer);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myPanel:array of TPanel ;
i:integer;
page:integer;
implementation{$R *.dfm}
procedure TForm1.MypanelCreate(MachineNum:integer);
var k:integer;
begin
page:=MachineNum div 4;
if (MachineNum mod 4<>0) then
page:=page+1;
if MachineNum>0 then
begin
setLength(mypanel,MachineNum);
for i:=0 to MachineNum-1 do
begin
myPanel[i]:=TPanel.create(self);
myPanel[i].parent:=form1;
mypanel[i].SetBounds( 40,120+96*i,185,41);
//mypanel[i].OnClick:= Button4Click;
mypanel[i].caption:=IntTostr(i);
mypanel[i].Color:= clSkyBlue;
//mypanel[i].Visible:=false;
if i > 3 then
begin
mypanel[i].Visible:=false;
mypanel[i].SetBounds( 40,120+96*(i-4),185,41);
end; end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MypanelCreate(20);
label1.Caption:=inttostr(page);
end;procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
begin
for j:=0 to 3 do
begin
mypanel[j].Visible:=false;
end;
for j:=4 to 7 do
begin
mypanel[j].Visible:=true;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var j:integer;
begin
for j:=4 to 7 do
begin
mypanel[j].Visible:=false;
end;
for j:=0 to 3 do
begin
mypanel[j].Visible:=true;
end;
end;end.
其中Button2和Button3是上页和下页的意识。我把它写死了,也就是说只能上翻一页和下翻一页。请大家帮我看看如何作到,我给出好多页就翻好多页。我想了好久斗门眼实现。请帮帮我,分好说。谢谢大家
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure MypanelCreate(MachineNum:integer);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myPanel:array of TPanel ;
i:integer;
page:integer;
implementation{$R *.dfm}
procedure TForm1.MypanelCreate(MachineNum:integer);
var k:integer;
begin
page:=MachineNum div 4;
if (MachineNum mod 4<>0) then
page:=page+1;
if MachineNum>0 then
begin
setLength(mypanel,MachineNum);
for i:=0 to MachineNum-1 do
begin
myPanel[i]:=TPanel.create(self);
myPanel[i].parent:=form1;
mypanel[i].SetBounds( 40,120+96*i,185,41);
//mypanel[i].OnClick:= Button4Click;
mypanel[i].caption:=IntTostr(i);
mypanel[i].Color:= clSkyBlue;
//mypanel[i].Visible:=false;
if i > 3 then
begin
mypanel[i].Visible:=false;
mypanel[i].SetBounds( 40,120+96*(i-4),185,41);
end; end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MypanelCreate(20);
label1.Caption:=inttostr(page);
end;procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
begin
for j:=0 to 3 do
begin
mypanel[j].Visible:=false;
end;
for j:=4 to 7 do
begin
mypanel[j].Visible:=true;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var j:integer;
begin
for j:=4 to 7 do
begin
mypanel[j].Visible:=false;
end;
for j:=0 to 3 do
begin
mypanel[j].Visible:=true;
end;
end;end.
其中Button2和Button3是上页和下页的意识。我把它写死了,也就是说只能上翻一页和下翻一页。请大家帮我看看如何作到,我给出好多页就翻好多页。我想了好久斗门眼实现。请帮帮我,分好说。谢谢大家
所以
当前页码为PageIndex, 所以 要设为Visible := true 的panel是
PageIndex, PageIndex+1, PageIndex+2, PageIndex+3
其他都为falseShowPage(PageIndex :Integer)for k := 0 to PageIndex do
myPanel[k] := false;for k := PageIndex to PageIndex+4 do
myPanel[k] := true;for k := PageIndex to PageMax do
myPanel[k] := false;
for k := PageIndex to PageIndex+3 do
myPanel[k] := true;用全局变量保存当前页码,每次翻页就是加减这页码生成新页码,用新页码代入ShowPage来显示
PageTo(Index :Integer)
begin
for k := 0 to PageMax do
myPanel[k] := false;for k := Index to Index+4 do
myPanel[k] := true;
end;
不过意思和楼上差不多
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure MypanelCreate(MachineNum:integer);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myPanel:array of TPanel ;
i:integer;
TotalPage,PageNumber:integer;
implementation{$R *.dfm}
procedure TForm1.MypanelCreate(MachineNum:integer);
var k:integer;
begin
Totalpage:=MachineNum div 4;
if (MachineNum mod 4<>0) then
totalpage:=totalpage+1;
if MachineNum>0 then
begin
setLength(mypanel,MachineNum);
for i:=0 to MachineNum-1 do
begin
myPanel[i]:=TPanel.create(self);
myPanel[i].parent:=form1;
mypanel[i].SetBounds( 40,120+96*i,185,41);
//mypanel[i].OnClick:= Button4Click;
mypanel[i].caption:=IntTostr(i);
mypanel[i].Color:= clBlue;
//mypanel[i].Visible:=false;
if i > 3 then
begin
mypanel[i].Visible:=false;
mypanel[i].SetBounds( 40,120+96*(i mod 4),185,41);
end; end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MypanelCreate(20);
label1.Caption:=inttostr(totalpage);
PageNumber:=1;
label2.Caption:=inttostr(PageNumber);
end;procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
begin
if PageNumber<Totalpage then
begin
for j:=0+(pagenumber-1)*4 to 3+(pagenumber-1)*4 do
begin
mypanel[j].Visible:=false;
end;
PageNumber:=PageNumber+1;
label2.Caption:=inttostr(PageNumber);
for j:=0+(pagenumber-1)*4 to 3+(pagenumber-1)*4 do
begin
mypanel[j].Visible:=true;
end;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var j:integer;
begin
if PageNumber>1 then
begin
for j:=0+(pagenumber-1)*4 to 3+(pagenumber-1)*4 do
begin
mypanel[j].Visible:=false;
end;
PageNumber:=PageNumber-1;
label2.Caption:=inttostr(PageNumber);
for j:=0+(pagenumber-1)*4 to 3+(pagenumber-1)*4 do
begin
mypanel[j].Visible:=True;
end;
end;
end;end.