初めて投稿します。
現在BCBを使用してますがタイマー機能を使用して(使用無しでも^^)
作りたい機能があるんですけど、どうしたらいいのか息詰まってしまって誰か教えて下さい。
とりあえずフォームにボタンを用意してボタンを押したら
時間が流れまたボタンを押したら5秒止まって勝手に動きだす
プログラムを作りたいんです。色々本やネットを検索したんですけど
駄目でした。誰かご教授下さい。
ちなみに最初の時間が流れるのは時計でも何でも動いてるのが
分かればどんなものでも大丈夫です。文字が横に流れるとかでもとりあえず動いていて止まってまた動きだす感じです。
ボタンを押したら時間が流れて0秒になったら最後ShowMessageが
出るプログラムは出来たのですが。上記のがなかなか出来ません。
どうぞ宜しくお願いします(ノ_-、)
A 回答 (3件)
- 最新から表示
- 回答順に表示
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;
}
}
//---------------------------------------------------------------------------
No.2
- 回答日時:
これは言語の問題というよりは、ロジックを組み立てる問題です。
初期起動かどうかのフラグをリセットする
↓
タイマーはとまっている
↓
ボタンが押されたら0.1秒単位でタイマーを起動する
と同時に、初期フラグを立てる
↓
タイマーのイベントで初期フラグがたっていたら時計を表示
↓
ボタンが押されたらタイマーを一旦とめ、
初期起動かどうかのフラグをリセットし、
5秒単位でタイマーを起動する
↓
タイマーのイベントで初期フラグがたっていなかったら
一度タイマーをとめ、初期フラグを設定して、0.1秒単位で
タイマーを起動する
↓
元に戻る
こんな形であれば、ボタンもタイマもひとつですみます。
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;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(パソコン・スマホ・電化製品) 先日、OPTIPLEX790を使用しスリープ機能で電源が落ちた後に電源が付かなくなるトラブルが発生し 1 2022/12/20 01:53
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- 関西 KBS京都 あんぎゃでござる TOKYO MX 京都 名所 日曜日 東京駅 東海道新幹線 京都駅 1 2023/08/13 10:10
- 洗濯・クリーニング・コインランドリー 【止まってばかりの洗濯機…これって洗えてますか?】 ※長文です。すみません とても困っておりますので 4 2022/03/30 11:50
- iPhone(アイフォーン) iPhone8使ってますか時々電源が勝手にオフになりますゲームなどしてる時、ホームボタン、電源ボタン 1 2023/02/23 03:44
- Android(アンドロイド) AQUOS sense6sの物理ボタン(アシスタントキー)に再生・一時停止を割り当てる方法 2 2022/08/09 00:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA(エクセル)で自動的にボタン...
-
VBA シートのボタン名を変更し...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
他のアプリケーションとの連携
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
VBA でのボタンの移動について
-
VBAでオプションボタンによって...
-
VB 電卓 数字キーを押して...
-
コマンドボタンの長押し
-
VB.NETでマウスクリックイベン...
-
C#で動的に作ったtextboxを消す。
-
CommandButtonのCaptionを変化...
-
バックスペース機能の作り方
-
Excel マクロ 閉じるボタン
-
[Excel VBA]コマンドボタンの入...
-
ボタンの枠線の様なものを消したい
-
Vba 電卓 一文字消すボタン
-
コントロールの背景色を
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
Access VBA でデータペーストを...
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
-
Excel マクロ 閉じるボタン
-
ボタン
-
CommandButtonのCaptionを変化...
-
VB.NETでマウスクリックイベン...
-
ボタンの枠線の様なものを消したい
-
C#で動的に作ったtextboxを消す。
おすすめ情報