| タイトル | : Re^3: コマンドボタンがFalseになったときコマンドボタンにピクチャーボックスの絵を貼り付ける。 |  
| 記事No | : 15959 |  
| 投稿日 | : 2014/09/03(Wed) 10:20 |  
| 投稿者 | : 魔界の仮面弁士  |  
 > またはコードの順番がいけないのでしょうか。 何の話でしょうか。というか、そもそも現状の問題点は何なのでしょうか?
  それと、command12false というものがあるということは、 command12true 相当のコードも用意してある、ということなのでしょうか。
 
 
  > もう一度頭で整理して疑問に思ったところを書き出してみました。 整理した結果、肝心の質問内容は何だったのでしょうか?
  いきなりコードを提示するのでは無く、記述したコードの「意図」と「目的」を 最初に説明してみて下さい。そうしないと、添削・回答できませんので…。
  先ほどの No.15957 でも、私が質問内容を「予想」して答えてはいますが、 その認識が正しかったのか見当違いなのかすら答えて頂けていないようです。
 
  > Me.Picture4.ForeColor = RGB(0, 0, 0) ’違いはここ > Me.Picture4.ForeColor = RGB(109, 109, 109) ’違いはここ
  Enabled = True なら、"HIGH&LOW"を 黒文字で、 Enabled = False なら "HIGH&LOW" を 灰色の文字で 描画したいということでしょうか?
 
  もしそうなら、
  Private Property Get Command12Enabled() As Boolean     Command12Enabled = Command12.Enabled End Property Private Property Let Command12Enabled(ByVal canUse As Boolean)     Picture4.Cls     '   :     ' (ここにjpgの割当やX,Y座標指定などの処理を記述)     '   :     Picture4.ForeColor = IIf(canUse, RGB(0, 0, 0), RGB(109, 109, 109))     Picture4.Print "HIGH&LOW"     Set Command12.Picture = Picture4.Image     Command12.Enabled = canUse End Property
  のようなプロパティを用意しておくと良いでしょう。
 
  そうすれば今まで、   Command12.Enabled = False   command12false のように 2 行で呼び出していた処理を、   Command12Enabled = False の一行だけで済ませられるようになります。もちろん、   Command12Enabled = True にすれば、黒文字に戻ります。
 
 
  > form_load form_paintのところに書いたのですが
  まず、Picture4.AutoRedraw = False だとしたら、Load イベントで呼び出すのは 意味がありません。まぁ、その場合はそもそも、Picture4.Image 自体が無意味なので、 今回は Picture4.AutoRedraw = True なのでしょうね。
  Picture4.AutoRedraw = True であるならば、Load イベントに書くのは 構わないと思いますが、Form_Paint に記述するのは、タイミングとして少々不自然ですね。 Form の Paint 時に呼び出しているのはどういった理由ででしょうか?
 
 
  > command12falseのサブルーチンをform_load form_paintのところに書いたのですが > それは問題ないでしょうか。
  command12false のことはサブルーチンではなく、「Sub プロシージャ」あるいは 「メソッド」と呼ぶのが一般的かと思います。VB6 で「サブルーチン」といった場合、 GoSub 〜 Return が先に連想されることがありますので御注意あれ。
  専門用語を避けて「form_load および form_paint にて、command12false を 呼び出しているのですが、それは問題無いでしょうか。」と表現しても良いかな。
 
 
  > またコマンドボタンのLOCKEDプロパティーというのを見つけたのですが、それを使ったほうが良いのでしょうか? VB6 の CommandButton に Locked プロパティはありません。 VBA の CommandButton にはありますけれどね。
  VB6 にも、デザイン時にフォームを右クリックしたときの「コントロールのロック」の状態を 保持するために「Locked プロパティ」が用意されていますが、これは開発環境が内部的に 保持するためのデザイン時プロパティであり、コードから設定/参照できるものではありませんし。
 
 
  >  Picture4.Picture = LoadPicture(App.Path & "\blue and red.jpg") > Set Command12.Picture = Picture4.Image 後者には "Set" と書かれていますが、前者には書かれていませんね。 Picture プロパティを割り当てるときは、常に Set ステートメントを併用してください。
  VB2 との互換性の関係上、Set 無し(Let 相当)でも代入できるようにはなっていますが 「オブジェクトの代入操作」は本来、Set を使うのが正しい記述方法です。
 
  > Picture4.Picture = LoadPicture(App.Path & "\blue and red.jpg") アプリがルートフォルダにある場合、App.Path は "C:\" などのように 末尾に \ を伴う文字列を返します。そして、 下位のフォルダにある場合は、"C:\Folder1" のように、 末尾に \ の無い文字列を返します。パスの操作時には御注意あれ。 
 
 |