• 締切済み

BorlandC++Builderでのタイマー機能教えて下さい

初めて投稿します。 現在BCBを使用してますがタイマー機能を使用して(使用無しでも^^) 作りたい機能があるんですけど、どうしたらいいのか息詰まってしまって誰か教えて下さい。 とりあえずフォームにボタンを用意してボタンを押したら 時間が流れまたボタンを押したら5秒止まって勝手に動きだす プログラムを作りたいんです。色々本やネットを検索したんですけど 駄目でした。誰かご教授下さい。 ちなみに最初の時間が流れるのは時計でも何でも動いてるのが 分かればどんなものでも大丈夫です。文字が横に流れるとかでもとりあえず動いていて止まってまた動きだす感じです。 ボタンを押したら時間が流れて0秒になったら最後ShowMessageが 出るプログラムは出来たのですが。上記のがなかなか出来ません。 どうぞ宜しくお願いします(ノ_-、)

みんなの回答

  • sayaama
  • ベストアンサー率44% (8/18)
回答No.3

サンプルです。 bool bFirst; を、privateに追加して、フォームにタイマーとボタンを配置して、 以下ですね。 //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { bFirst = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(bFirst){ bFirst = false; Timer1->Enabled = true; }else{ Timer1->Enabled = false; bFirst = true; Timer1->Interval=5000; Timer1->Enabled = true; Button1->Caption = "5秒休憩中だよ。"; Button1->Enabled = false;// } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Enabled = false; if(!bFirst){ Button1->Enabled = true; SYSTEMTIME st; ::GetLocalTime(&st); AnsiString As; As.printf("%d:%02d:%02d-%03d",st.wHour,st.wMinute,st.wSecond,st.wMilliseconds); L->Caption = As; Timer1->Enabled = true; Button1->Caption = "押したら5秒とまるよ。"; P1->Enabled = true; }else{ Timer1->Interval=10; bFirst = false; Timer1->Enabled = true; } } //---------------------------------------------------------------------------

bu-rinko
質問者

お礼

ありがとうございました!参考になりました!! 感謝です。

  • sayaama
  • ベストアンサー率44% (8/18)
回答No.2

これは言語の問題というよりは、ロジックを組み立てる問題です。 初期起動かどうかのフラグをリセットする ↓ タイマーはとまっている ↓ ボタンが押されたら0.1秒単位でタイマーを起動する と同時に、初期フラグを立てる ↓ タイマーのイベントで初期フラグがたっていたら時計を表示 ↓ ボタンが押されたらタイマーを一旦とめ、 初期起動かどうかのフラグをリセットし、 5秒単位でタイマーを起動する ↓ タイマーのイベントで初期フラグがたっていなかったら 一度タイマーをとめ、初期フラグを設定して、0.1秒単位で タイマーを起動する ↓ 元に戻る こんな形であれば、ボタンもタイマもひとつですみます。

bu-rinko
質問者

お礼

なるほど!タイマ機能は二つ必要なのかと思ってましたが 色々と応用があるのですね!ありがとうございました。

  • KoHal
  • ベストアンサー率60% (110/181)
回答No.1

とりあえずサンプル。 わからない点はヘルプをしっかり読む。 それでも判らなければ判らない点を具体的かつ明確に再質問してください。 フォーム上にTTimerを2つ、TLabelを1つ、TButtonを2つぽとりぺたりする。 それぞれTimer1、Timer2、Label1、Button1、Button2とする。 以下の通り設定  Timer1:メインの作業をするタイマー。Intervalを1000ms、Enableをfalseに設定。  Timer2:Timer1を5秒停止させるためのタイマー。Intervalを5000ms、Enabledをflaseに設定。 Button1のOnClickイベントで  Timer1->Enabled = true; Button2のOnClickイベントで  Timer1->Enabled = false;  Timer2->Enabled = true; Timer1のOnTimerイベントで  Lavel1->Caption = Time();//メインの作業。とりあえず現在時刻を表示。 Timer2のOnTimerイベントで  Timer1->Enabled = true;  Timer2->Enabled = false;

bu-rinko
質問者

お礼

分かりやすく教えて頂いてありがとうございました。 お陰さまで上手くいきました^^

関連するQ&A