Delphi6パーソナルで勉強を始めた者です。
チェックボックスを貼り付けてCheckedになったらProcedure A; に飛び、そうでなかったらProcedure B;に飛ぶということをさせたいのですが
これを
TForm1.CheckBox1Click(Sender: TObject);に書いた場合はチェックボックスをクリックしてもイベントが発生しません。
またこれをTForm1.MouseDownに書いた場合も同様のようでBeepを入れたりブレークポイントを指定して動きを監視したのですが引っかかりません。
チェックボックスのON/OFFをした時にCheckedかどうかによってイベントを発生させるにはどうしたら良いか教えてください。設定方法などに問題があるのでしょうか?
コードはどのように書いているのですか?
igy様 対応ありがとうございます。
Procedure TForm1.CheckBox1Click(Sender: TObject);
Begin
Beep; //イベントが発生しているか耳でチェック
ChkStatus; // 動かないのでアクションをここから移動してみました
End;
Procedure ChkStatus;
Begin
If Form1.CheckBox1=Checked then
Begin
Timer1.Enabled:=True;
PicDraw; // 絵を表示
End;
Else
Begin
Timer1.Enabled:=False;
igy様 対応ありがとうございます。
先ほど書いていたら途中で意図しないで送信されてしまいましたので再度お送りさせていただきます。コードは下記のようにテストしながらこのようになりました。
---------------------------------------------------
Procedure TForm1.CheckBox1Click(Sender: TObject);
Begin
Beep; //イベントが発生しているか耳でチェック
ChkStatus; // 動かないのでアクションをここから移動してみました
End;
Procedure ChkStatus;
Begin
If Form1.CheckBox1=Checked then
Begin
Timer1.Enabled:=True;
PicDraw; // 動く絵を表示
End;
Else
Begin
Timer1.Enabled:=False;
PicReset; //絵を削除
・・・・ // 別の作業
End;
というようなものです。他に新たにDelphiを立ち上げてテストするとちゃんとイベントを取得できるのですが今いじっている開発しようとしている本番のプログラムでは思うようにならなくて質問させていただきました。プロパティーがおかしいのかなど洗っていますが現段階で正常に動作するものとの相違点はわかりません。問題点のヒントなどよろしくお願いします。
ちなみに、
そのチェックボックスのオブジェクトインスペクタの「イベント」
タブのOnClick欄に CheckBox1Click が設定されていますか?
また、コードのどこかで
CheckBox1.OnClick := CheckBoxXXXXXClick;
のように、別のイベントを設定しているというのはありませんか?
どんな処理?
If Form1.CheckBox1=Checked then // ??
If Form1.CheckBox1.Checked=true then // ??
ELSE の前に ; があったりと、実際に動作するとは思えれません。
実際に動作するソースを載せてもらわないと・・・、
最低でもコンパイルの通るソースを載せて欲しいです。
igy様、通りがかり様 申し訳ありません。当方の超初歩的なミスでした。結果的に問題なく動きました。
今まで長く使ってきたソフトを大改造しようと思い、それまで使ってきたフォルダーAに加えてフォルダーBを作りました。そしてフォルダーAの内容をそのままフォルダーBにコピーしてもしも取り返しのつかない失敗をしてもAを残しておくという目的でBにあるA.dprを立ち上げていじってきました。何度も何度も各種のテストをしたのですが少しも結果が反映されませんでした。そして先ほどエクスプローラでタイムスタンプを見たら何とフォルダーAが新しくなっていました。フォルダーBのdprを読んで.pasを変更してもフォルダーAの.pasに上書きされているとは知りませんでした。DPRとPASの関係がよくわかりませんでしたのでフォルダーBのDPR,PASの名前を全て変更してフォルダーAとの関係を完全に絶ってテストしたところうまく動きました。超初歩的なミスを知らずにお尋ねし本当に申し訳ありませんでした。
(If Form1.CheckBox1.Checked=true then // ?? >>直しました。御礼)
ちょっとだけ・・・
If Form1.CheckBox1.Checked=true then
は
If Form1.CheckBox1.Checked then
でOKですよ
むくさんにお礼。 If Form1.CheckBox1.Checked=true then と If Form1.CheckBox1.Checked then を試しましたがどちらも通りました。一つ覚えました。
ちょっとだけ・・・
たぶん、dpr(プロジェクト)を開くと、前回閉じた時に開いていたユニットが
開くようになってるんだと推測。
エクスプローラで別フォルダにプロジェクトフォルダを複写しても
複写先のプロジェクトが記憶している作業状態は、以前のフォルダ。
だから、全ユニットを一回閉じて、履歴ではなく普通に開けばよかったはず・・・と言ってみる。
ツイート | ![]() |