- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 动态生成九宫格按钮
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)
procedure FormCreate(Sender: TObject);
procedure CustomButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
const
iHtoH = 20; //行间距
iWtoW = 10; //列间距
iPerLine = 3;//每行个数
iWidth = 80; //按钮宽度
var
I : integer;
begin
//算法:动态创建30个按钮,每行6个共5行,顺序排列,显示在ScrollBox上
for I := 1 to 9 do
with TButton.Create(Self) do begin
Name := 'Btn' + InttoStr(I);
OnClick := CustomButtonClick; // 指定button click事件
Parent := Self;
Caption := InttoStr(I); //Name
Top := iHtoH + (9+iHtoH) * (I div iPerLine - integer((I mod iPerLine)=0));
Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
Show;
end;
end;//或许可以继续精练一下
procedure TForm1.CustomButtonClick(Sender: TObject);
begin
// 根据 Sender 来判断哪个新建的button click
ShowMessage(TButton(Sender).Caption);
end;
end.