unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) ScrollBox1: TScrollBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; numPerCol,col: Integer; _left: Integer; _top: Integer; row: Integer; recnum, vspace: Integer; chk: TCheckBox; begin col := 1; row := 1; recnum := 0; vspace := 15; //行间距 _left := 10; _top := 10; numPerCol:=10; //每列显示10个checkbox for i := 1 to 35 do begin inc(recnum); chk := TCheckBox.Create(self.ScrollBox1); chk.Parent := self.ScrollBox1; chk.Caption := IntToStr(i); chk.Tag := i; if (recnum mod numPerCol = 0) then begin chk.Left := _left * col + chk.Width * (col - 1); if col > 1 then chk.Top := _top + chk.Height * (row - 1) + vspace * (row - 1) else chk.Top := _top * (col) + chk.Height * (row - 1) + vspace * (row - 1); inc(col); row := 1; end else begin chk.Left := _left * col + chk.Width * (col - 1); if col > 1 then chk.Top := _top + chk.Height * (row - 1) + vspace * (row - 1) else chk.Top := _top * (col) + chk.Height * (row - 1) + vspace * (row - 1); inc(row); end; end; end; end.
代码的效果图如下: