一旦选中两个复选框,我希望文本文件显示备忘录1中的内容。
我该怎么做?
我试过下面的代码,但似乎做不好。

if CheckBox1.Checked and CheckBox2.Checked then
begin
memo1.lines.LoadFromFile('files\RS.txt');
end;

我还希望能够单独选择复选框,如:
(指出这一点,以防将它们组合在一起而无法单独检查它们)
检查框1:
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
   memo1.lines.LoadFromFile('files\R.txt');
end;

检查框2:
procedure TForm1.CheckBox2Change(Sender: TObject);
begin
   memo1.lines.LoadFromFile('files\S.txt');
end;

如有任何建议/改进,将不胜感激。
运行Lazarus IDE v1.6.4
Windows 10 x64

最佳答案

我假设您的目标是生成一个文件名,它取决于
两个复选框的布尔状态的特殊组合-
参见下面的示例代码。这样做的目的是帮助分离
文件名的定义
有了它。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile(GetFileName);
end;

function TForm1.GetFileName: String;
begin
  //  Return empty string if neither checkbox is checked
  Result := '';

  if Checkbox1.Checked and Checkbox2.Checked then
    Result := 'files\RS.txt'
  else  // if we reach here only one of the checkboxes, or neither, is checked
    if Checkbox1.Checked then
      Result := 'files\R.txt'
    else
      if Checkbox2.Checked then
        Result := 'files\S.txt'
end;

我在一开始就为函数的Result分配了一个空字符串,以确保始终定义Result
重要信息:您将注意到上面没有使用复选框的更改事件。原因是,如果从未触发更改事件(例如,如果一个复选框设置为在IDE中选中,而另一个复选框未选中),则可能无法获得所需的(或预期的)结果,并且无论用户是否实际单击了其中一个复选框,都希望获得正确的文件名他们当中。

10-05 22:41
查看更多