使用Delphi 7创建倒计时和加载栏

时间:2013-02-16 15:25:17

标签: delphi delphi-7

我正在使用Delphi 7来创建程序。我有一个名为CoinsEdit的输入框。当用户单击“提交”时,他们必须等待的秒数 CoinsEdit.text div 30 + 2 。我得到它显示他们必须等待的分钟数和秒数,但我希望它能倒数。我还想要一个进度条来配合它。所有这些都将出现在一个对话框中。并且应该禁用“确定”按钮,直到加载完成。到目前为止我所拥有的:

procedure TForm1.onConnected;
var
  amount: string;
  user: string;
  pass: string;
begin
  amount := CoinsEdit.text;
  user := UserEdit.text;
  pass := PassEdit.text;    
  Form1.Visible := False;

  ShowMessage('Please wait for ' + Seg2Min(StrToInt(CoinsEdit.text) div 30 + 2));

  ShowMessage(user + ', ' + Trim(amount) + ' coins have been added to your ' +
    'account.');

  Form1.Visible := True;
  UserEdit.Text := '';
  PassEdit.Text := '';
  CoinsEdit.Text := '';
end;

Seg2Min是一个将秒转换为分钟和秒的函数。这是功能:

Min := Seg div 60;
Rest := Seg - (Min*60);
if Min = 0 then
  Seg2Min:= FormatFloat('0', Rest) + ' seconds'
else
  Seg2Min:= FormatFloat('0', Min) + ' minutes and ' + FormatFloat('0', Rest) + 
    ' seconds'; 

如何使用TTimer并将其用于倒计时?

1 个答案:

答案 0 :(得分:2)

好的,我解决这个问题的方法是:

1.创建2个表单。(frmLogin,frmDialog)

2.如果单击提交按钮,则显示第二个表单“frmDialog”

3.然后我有一个更新进度条的计时器。

您感兴趣的代码是:

private
  { Private declarations }
    TimeRemaining,startvalue : Integer;
public
  { Public declarations }
end;


procedure TfrmDialog.FormShow(Sender: TObject);
begin
  TimeRemaining:=StrToInt(frmLogin.edtCoins.text) div 30 + 2;
  startvalue:=TimeRemaining;
end;

procedure TfrmDialog.Timer1Timer(Sender: TObject);
begin
  lblProgress.Caption:='Please wait for ' + IntToStr(TimeRemaining);
  TimeRemaining:=TimeRemaining-1;
  ProgressBar1.Max:= startvalue * 200;
  ProgressBar1.StepBy(200);
  if TimeRemaining < 0 then
    begin
    btnOk.Enabled:=true;
    lblProgress.Hide;
  end;
end;

你只需要填写正确的数学。 但是,如果您不理解或想要更多帮助,我想你会得到这个想法。只需发表评论。