【问题标题】:Pause a Loop for Data Entry暂停数据输入循环
【发布时间】:2014-07-14 17:10:42
【问题描述】:

我正在从文本文件中导入项目列表,并尝试使用用户对单个数据条目的手动插入例程。但是,对于导入,我需要暂停每个新条目,以便用户在发布之前手动为其分配一些其他详细信息。如何为每次迭代暂停循环?我不能使用 MessagDlg,因为它是模态的,并且不允许用户在发布之前更改内容。

伪代码。

btnInsertClick;
begin
  DB.Insert;
  DB.FieldByName('Item').AsString:=StrList[aCtr];
end;

btnPostClick;
begin
  DB.Post;
  Inc(aCtr);
end;

btnCancelClick;
begin
  DB.Cancel;
  aCtr:=StrList.Count;
end;

ImportList;
begin
  StrList.LoadFromFile('TextFile.txt');
  aCtr:=0;
  repeat
    btnInsertClick;
// The User needs to be able to select data from 
// two drop-down-combos before Posting.
// I need to wait here for Post or Cancel to be clicked
  until aCtr = StrList.Count;
end;

【问题讨论】:

  • 在导入例程中调用 btnXXX.Click 绝对是错误的做法。为自己设计一个数据输入表单,用于在数据库表中输入/编辑单个记录。然后,编写一个例程,将 StrList 中的记录直接插入表中,然后调用数据输入表单来编辑/更正/完成/删除它。顺便说一句,这是学习练习还是实际应用?
  • 你几乎完成了。只需删除该重复直到循环,让用户完成其余的工作。您加载数据,将计数器 aCtr 设置为 0 并显示必要的附加信息。用户将完成其余的点击发布和取消按钮。只需将 aCtr 变量保持为全局变量即可。之后调用一些 proc 来显示下一条记录的数据

标签: delphi loops repeat delphi-5


【解决方案1】:

使用循环不是一个好主意。简单地说,当单击按钮时,执行与您现在所做的相同的操作,并为下一个输入准备数据(增加aCtr,显示下一个提示,将组合框的ItemIndex 设置为-1)。如果此时aCtr >= StrList.Count - 禁用/隐藏按钮,或关闭表单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2017-03-12
    • 2014-06-09
    • 1970-01-01
    相关资源
    最近更新 更多