0

Delphi 7 を使用してプログラムを作成しています。CoinsEdit という入力ボックスがあります。ユーザーが [送信] をクリックすると、待機する必要がある秒数は になります CoinsEdit.text div 30 + 2 。彼らが待たなければならない分数と秒数を表示するようにしましたが、ライブでカウントダウンしたい. プログレスバーもそれに合わせて欲しいです。これらはすべてダイアログ ボックスに表示されます。また、ロードが完了するまで「OK」ボタンは無効にする必要があります。私がこれまでに持っているもの:

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を使用してカウントダウンに使用するにはどうすればよいですか?

4

1 に答える 1

2

わかりましたので、この問題に取り組むために私がしたことは次のとおりです。

1.フォームを2つ作成する(frmLogin,frmDialog)

2.送信ボタンをクリックすると、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;

正しい数学を記入するだけです。しかし、理解できない場合、またはコメントを残すだけでさらに助けが必要な場合は、アイデアが得られると思います。

于 2013-02-16T17:26:31.210 に答える