如何在 Delphi 中使用复选框?

Posted

技术标签:

【中文标题】如何在 Delphi 中使用复选框?【英文标题】:How to use a checkbox in Delphi? 【发布时间】:2009-03-19 05:59:37 【问题描述】:

现在,我有代码:

begin
If odd(GetAsyncKeyState(VK_snapshot)) then
If CheckBox1.Checked then
begin

然后继续执行其余代码。这是正确的做法,还是我做错了?

【问题讨论】:

我想要它,如果用户选中复选框,它将继续执行该过程,但如果未选中复选框,它将继续执行不同的过程。 【参考方案1】:

您的建议是确定是否选中复选框的完全合法的方法。这样做的代码可能看起来像

if checkBox.Checked then begin
    //do whatever needed for checked checkbox
end

或者像这样

if checkBox.Checked then begin
    //do whatever needed for checked checkbox
end else begin
    //do whatever needed for unchecked checkbox
end

请记住,您从 Checked 属性中获取的值对应于您获取该值时复选框的状态。

【讨论】:

对于第二个,如果按下 Print Screen,我将如何实施检查?或者,如果可能的话,你能把那个人放进第二个代码吗? 是一样的。您有“KeyPressed”或类似事件的事件处理程序。你在里面检查它是否真的是按下的感兴趣的键。如果是,则调用读取复选框状态并采取相应措施的代码。 好吧,我有这个:begin if CheckBox1.Checked then begin If odd(GetAsyncKeyState(VK_snapshot)) Then begin //code here end else begin //不同的代码在这里 end;这似乎有效。【参考方案2】:
if DT.FieldByName('name_of_checkbox').AsBoolean=True then begin ..... end;
// In this case dt is TADOquery that you had used in your program.

【讨论】:

【参考方案3】:

由于您使用 2 个 if 语句,您也可以将它们合并为一个:

if odd(GetAsyncKeyState(VK_snapshot)) and CheckBox1.Checked then
begin
  ...
  ...
end;

if 语句的第二部分 (checkbox1.Checked) 只有在第一部分的计算结果为 True 时才会被计算。 (由于Delphi使用Short-circuit evaluation)

【讨论】:

请编辑这个 - Delphi 不一定必须使用短路评估,行为取决于 $B 编译器指令或相应的命令行开关!

以上是关于如何在 Delphi 中使用复选框?的主要内容,如果未能解决你的问题,请参考以下文章

delphi中如何实现checkbox的多选

delphi 如何判断多个checkbox是不是选中

delphi DBGridEH控件的checkbox如何判断是不是选中,求指导 !

请问在Delphi中利用DBGridEh加一列复选框时不能选择的问题怎么解决?

带有复选框的 Delphi 树视图:有时复选框是不可见的

请问在Delphi中利用DBGridEh加一列复选框时不能选择的问题怎么解决? 我用的也是clientdateset,但选不了.