delphi判断多个CheckBox是否勾选(几种做法)

发布时间 2023-06-03 15:45:12作者: williamlv

看到群里网友在问这个问题?尝试写一下代码

1、用FindComponent函数 根据控件名称动态获取对应的控件状态

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  str: string;
begin
  str := '';
  for i := 1 to 3 do // 假设需要判断三个checkbox
  begin
    if (FindComponent('CheckBox' + IntToStr(i)) as TCheckBox).Checked then
      str := str + '1'
    else
      str := str + '0';
  end;
  ShowMessage(str); // 显示结果
end;

 

2、群里大老说可以用数组来实现

procedure TForm1.Button1Click(Sender: TObject);//代码也可以加到Checkbox的onClick
var
  checkboxArray: array of TCheckBox;
  str: string;
  i: Integer;
begin
  SetLength(checkboxArray, 7); // 假设有7个checkbox
  checkboxArray[0] := CheckBox1;
  checkboxArray[1] := CheckBox2;
  checkboxArray[2] := CheckBox3;
  checkboxArray[3] := CheckBox4;
  checkboxArray[4] := CheckBox5;
  checkboxArray[5] := CheckBox6;
  checkboxArray[6] := CheckBox7;
  str := '';
  for i := 0 to Length(checkboxArray) - 1 do
  begin
    if checkboxArray[i].Checked then
      str := str + '1'
    else
      str := str + '0';
  end;
  // 此时str的值就是所有checkbox的状态组成的字符串
   Edit1.Text:=str;
end;

 

3、把它写成函数

function GetCheckboxStatus(checkboxArray: array of TCheckBox): string;
var
  str: string;
  i: Integer;
begin
  str := '';
  for i := 0 to Length(checkboxArray) - 1 do
  begin
    if checkboxArray[i].Checked then
      str := str + '1'
    else
      str := str + '0';
  end;
  Result := str;
end;

procedure TForm1.CheckBox1Click(Sender: TObject); //调用
begin
    Edit1.text:= GetCheckboxStatus([CheckBox1, CheckBox2, CheckBox3,CheckBox4,CheckBox5,CheckBox6,CheckBox7]);
end;