一旦选中两个复选框,我希望文本文件显示备忘录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中选中,而另一个复选框未选中),则可能无法获得所需的(或预期的)结果,并且无论用户是否实际单击了其中一个复选框,都希望获得正确的文件名他们当中。