Delphi 如果InputQuery为false,则取消过程的其余部分 procedure TForm1.按钮2点击(发送方:TObject); 变量 按钮:t按钮; 例如:字符串; 开始 如果{Example='''}InputQuery('在此处放置问题/请求',示例),则 重复 InputQuery(“在此处提出问题/请求”,示例); 如果InputQuery=False,则 中止 其他的 直到示例“”为止//或输入框。 按钮:=TButton.Create(self); Button.Parent:=self; //按钮属性在这里 按钮。标题:=(示例); //任何手续都可以在这里办理 结束;
重复循环后,即使用户按下“取消”,此过程仍将继续。如果Delphi 如果InputQuery为false,则取消过程的其余部分 procedure TForm1.按钮2点击(发送方:TObject); 变量 按钮:t按钮; 例如:字符串; 开始 如果{Example='''}InputQuery('在此处放置问题/请求',示例),则 重复 InputQuery(“在此处提出问题/请求”,示例); 如果InputQuery=False,则 中止 其他的 直到示例“”为止//或输入框。 按钮:=TButton.Create(self); Button.Parent:=self; //按钮属性在这里 按钮。标题:=(示例); //任何手续都可以在这里办理 结束;,delphi,input,Delphi,Input,重复循环后,即使用户按下“取消”,此过程仍将继续。如果InputQuery=False,我尝试使用CancelCreateButton标签使用GoTo函数,但我只是得到了错误(因此我删除了一些代码) 如果用户单击inputquery上的cancel(取消),它将取消该过程,而不创建按钮,我如何使它这样做呢?如果按下输入查询表单的cancel(取消)按钮,那么调用inputquery(输入查询)将返回False(错误)。在这种情况下,您应该调用静默异常Abort,以跳过事件处理程序的其余部分 pr
InputQuery=False
,我尝试使用CancelCreateButton
标签使用GoTo函数,但我只是得到了错误(因此我删除了一些代码)
如果用户单击inputquery上的cancel(取消),它将取消该过程,而不创建按钮,我如何使它这样做呢?如果按下输入查询表单的cancel(取消)按钮,那么调用inputquery(输入查询)将返回False(错误)。在这种情况下,您应该调用静默异常
Abort
,以跳过事件处理程序的其余部分
procedure TForm1.Button2Click(Sender: TObject);
var
Button: TButton;
Example : String;
begin
if {Example = ''} InputQuery('Put a question/request here', Example) then
Repeat
InputQuery('Put a question/request here', Example);
if InputQuery = False then
Abort
else
Until Example <> ''; //or InputBox.
Button := TButton.Create(self);
Button.Parent := self;
//Button properties go here
Button.Caption := (Example);
//Any procedures can go here
end;
如果要在循环中执行验证,则如下所示:
if not InputQuery(...) then
Abort;
如果按下输入查询表单的取消按钮,则对
InputQuery
的调用返回False
。在这种情况下,您应该调用静默异常Abort
,以跳过事件处理程序的其余部分
procedure TForm1.Button2Click(Sender: TObject);
var
Button: TButton;
Example : String;
begin
if {Example = ''} InputQuery('Put a question/request here', Example) then
Repeat
InputQuery('Put a question/request here', Example);
if InputQuery = False then
Abort
else
Until Example <> ''; //or InputBox.
Button := TButton.Create(self);
Button.Parent := self;
//Button properties go here
Button.Caption := (Example);
//Any procedures can go here
end;
如果要在循环中执行验证,则如下所示:
if not InputQuery(...) then
Abort;
您还可以使用
退出
功能您也可以使用退出
功能您要输入的调用太多,三个调用只需要一个;最好将InputQuery的结果捕获到一个布尔变量,并将其用于执行流控制。请尝试以下方法:
repeat
if not InputQuery(..., Name) then
Abort;
until NameIsValid(Name);
假设这符合您对单个学生的期望,您可以恢复
重复。。。直到
获得您需要的行为。您有太多的调用要输入查询,三个调用只需要一个;最好将InputQuery的结果捕获到一个布尔变量,并将其用于执行流控制。请尝试以下方法:
repeat
if not InputQuery(..., Name) then
Abort;
until NameIsValid(Name);
假设这符合您对单个学生的期望,您可以恢复
重复。。。直到
获得所需的行为。如果用户在GUI事件处理程序中取消,请调用中止@DavidHeffernan我已尝试在重复循环中调用中止,是否应该在其他地方执行?重复输入查询('输入学生姓名'、'姓名');如果InputQuery=False,则中止else,直到名称为“”;我正在查看代码,我看不到调用中止
。@DavidHeffernan如果我删除了它,我将编辑问题以显示我将它放在哪里,我将还原您的编辑。回答完问题后请不要改变。如果您有新问题,请以新问题的形式提问。然而,既然你似乎不愿意听答案,我建议你不要费心问。这只是浪费每个人的时间。如果用户在GUI事件处理程序中取消,请调用Abort
@DavidHeffernan我已经尝试在重复循环中调用Abort,我应该在其他地方执行吗?重复输入查询('输入学生姓名'、'姓名');如果InputQuery=False,则中止else,直到名称为“”;我正在查看代码,我看不到调用中止
。@DavidHeffernan如果我删除了它,我将编辑问题以显示我将它放在哪里,我将还原您的编辑。回答完问题后请不要改变。如果您有新问题,请以新问题的形式提问。然而,既然你似乎不愿意听答案,我建议你不要费心问。这只是浪费每个人的时间。其余的程序仍在进行,而按钮仍在生产。没有。当然,我假设您没有定义自己版本的Abort
,它隐藏了System.Abort
。这是您需要提供的。我只是把它放在那里作为一个占位符。它和我在答案中写的一样完美。我建议你放慢脚步,多想想。将NamesIsValid(Name)
替换为名称有效的测试。如果你做不到这一点,那你就有大麻烦了。我不明白你为什么坚持中止。在这种情况下,退出就可以了。如果要将代码提取到另一个方法中,则将整个代码从事件处理程序提取到一个新方法中。过程的其余部分将继续进行,按钮仍在生成中。没有。当然,我假设您没有定义自己版本的Abort
,它隐藏了System.Abort
。这是您需要提供的。我只是把它放在那里作为一个占位符。它和我在答案中写的一样完美。我建议你放慢脚步,多想想。将NamesIsValid(Name)
替换为名称有效的测试。如果你做不到这一点,那你就有大麻烦了。我不明白你为什么坚持中止。在这种情况下,退出就可以了。如果您想将代码提取到另一个方法中,那么可以将整个代码从事件处理程序提取到一个新方法中。但是Abort
更好。有时,您会将代码提取到另一个方法中,然后exit
仅退出该方法<代码>中止
对此类更改具有鲁棒性。退出和功能结果+1。中止是可以的,但它是一种更先进的技术,我怀疑询问者是否有足够的德尔福知识,是否愿意投资于此。特别是关于这个问题