我正在使用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
并将其用于倒计时?
答案 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;
你只需要填写正确的数学。 但是,如果您不理解或想要更多帮助,我想你会得到这个想法。只需发表评论。