本章来说说在Delphi中,动态创建CheckBox控件;在要在界面显示之前就创建好,可在create事件中创建。
CheckboxFlag=0 单个选择 1 全选/全不选 由于全选或全不选都调用MyCheckboxClick
第一步:创建CheckBox控件
Checkboxs:array[0..200] of TCheckBox;
for i:=0 to (MainForm.xyTotals-1) do//MainForm.xyTotals 创建CheckBox的个数
begin
Checkboxs[i]:=TCheckBox.Create(self);
Checkboxs[i].Parent:=scrlbx1; //组 GroupBox控件名
//Checkboxs[i].OnClick:=MyCheckboxClick;
Checkboxs[i].Tag:=i;
Checkboxs[i].Caption:=IntToStr(i+1);
Checkboxs[i].Left:=(i-(i div MainForm.xTotal)*MainForm.xTotal)*(43+4)+16; //坐标都是相对于他的parent 留2列给shapebigpic的边框
Checkboxs[i].Top:=(i div MainForm.xTotal)*(30+4)+18; //坐标都是相对于他的parent 留2列给shapebigpic的边框
end;
第二步:选中某个CheckBox功能,单击事件
procedure MyCheckboxClick(Sender: TObject);
var
count:integer;
begin
MainForm.ChangeScreenCursorStatus(2);
if CheckboxFlag=0 then
begin
count:=TCheckBox(Sender).Tag;
if Checkboxs[count].Checked=True then
begin
end;
if Checkboxs[count].Checked=False then
begin
end;
MainForm.ChangeScreenCursorStatus(1);
end;
end;
第三步:全选
procedure TLoopNodesSetting.btnSelectAllClick(Sender: TObject);
var
i:Integer;
begin
for i:=0 to (MainForm.xyTotals-1) do
begin
Checkboxs[i].Checked:=True;
end;
end;
第四步:全不选
procedure TLoopNodesSetting.btnSelectNoneClick(Sender: TObject);
var
i:Integer;
begin
for i:=0 to (MainForm.xyTotals-1) do
begin
Checkboxs[i].Checked:=False;
end;
end;