toolbar上边动态生成100个按钮,如果用两个按钮来翻页?
toolbar有100个动态生成的按钮(SpeedButton),我想用两个按钮做成滚动条的效果,点一次显示8个按钮
[解决办法]
直接放100个,或者panel上放100个
2个按钮去控制容器toolbar或panel的可见部分的x方向位置
[解决办法]
你应该是需要拖一个 TPageScroller 作为 toolbar 的 parent
[解决办法]
新建工程、双击工程中的窗体、用下列代码覆盖你的unit1所有内容:
- Delphi(Pascal) code
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ToolWin, ComCtrls, ImgList, StdCtrls, Buttons;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ButtonClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationvar ToolBar:TToolBar; ToolButton:array[0..99]of TToolButton; Button:array[0..1]of TButton; btindex:integer;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);var i:integer;begin Width:=623; Height:=250; Position:=poScreenCenter; OnCloseQuery:=FormCloseQuery; ToolBar:=TToolBar.Create(self); ToolBar.Parent:=Form1; ToolBar.Wrapable:=false; ToolBar.Height:=44;// ToolBar.Images:=ImageList1; //假如你有这个组件在,则去除注释 ToolBar.ShowCaptions:=true; for i:=99 downto 0 do begin ToolButton[i]:=TToolButton.Create(self); ToolButton[i].ImageIndex:=i; ToolButton[i].Parent:=ToolBar; ToolButton[i].AutoSize:=false; ToolButton[i].Width:=80; ToolButton[i].Caption:='ToolButton'+inttostr(i+1); end; for i:=8 to 99 do ToolButton[i].Visible:=false; for i:=0 to 1 do begin Button[i]:=TButton.Create(self); Button[i].Parent:=Form1; Button[i].Top:=140; Button[i].Left:=i*Button[i].Width+100*i+190; Button[i].OnClick:=ButtonClick; end; Button[0].Caption:='上一组'; Button[0].Enabled:=false; Button[1].Caption:='下一组';end;procedure TForm1.ButtonClick(Sender: TObject);var i:integer;begin if TButton(Sender).Caption='下一组' then begin Button[0].Enabled:=true; if btindex<12 then inc(btindex); if btindex=12 then Button[1].Enabled:=false; end else begin Button[1].Enabled:=true; if btindex>0 then dec(btindex); if btindex=0 then Button[0].Enabled:=false; end; for i:=0 to 99 do begin if i in [btindex*8..btindex*8+7]then ToolButton[i].Visible:=true else ToolButton[i].Visible:=false; end;end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);var i:integer;begin ToolBar.Free; for i:=0 to 1 do Button[i].Free;end;end.