ボタンに張り付いた画像を切り替えるには?

解決


初心者2  2005-09-06 22:28:22  No: 124948

コマンドボタンを押したとき、最初にプロパティで設定していた再生ボタン「▼(→実際の画像は横向き)」を停止ボタン「■」にコードで切り替えることは可能でしょうか?


ささ  2005-09-06 22:38:41  No: 124949

VB6であるならば、

Command1_Click()イベントの頭の方に
Command1.picture="■"'停止ボタンの画像を
指定すれば大丈夫だと思いますが・・・。


通ってみた  2005-09-06 22:46:46  No: 124950

ファイルからの場合は
Command1.Picture = LoadPicture("画像ファイル名")

PictureBoxからなら
Command1.Picture = Picture1.Picture

とか


初心者2  2005-09-06 23:25:13  No: 124951

さささん、通ってみたさんありがとうございます。半分だけうまくいきました。(試したのはファイルからの方法です。)
以下のように記述していて、最初に▼→■にはなるのですが、■→▼に戻りませんIf分がおかしいのでしょうが、何かいい判断方法はありますか?

 Dim w_start, w_stop As String
 start = CurDir & "\start.gif"
 stop = CurDir & "\stop.gif"
 
 If Command1.Picture = LoadPicture(stop) Then
   Command1.Picture = LoadPicture(start)
 Else
   Command1.Picture = LoadPicture(stop)
 End if

またPictureBoxというのも気になります。初心者がわかるようなサイトあったら教えていただけませんか?

 End If


KG  2005-09-06 23:43:54  No: 124952

おそらく
Command1.Picture = LoadPicture(stop)
が、どちらの場合もFalseになっているのでしょうね。

Pictureで判断するのではなくてFlgなどを宣言しておいて
判断されてはいかがでしょうか?


初心者2  2005-09-07 00:32:11  No: 124953

開発環境は、VB6です。実際は、配列を使用していて

 Dim start, stop As String
 start = CurDir & "\start.gif"
 stop = CurDir & "\stop.gif"
 
 If Command1(i).Picture = LoadPicture(stop) Then
   Command1(i).Picture = LoadPicture(start)
 Else
   Command1(i).Picture = LoadPicture(stop)
 End if

という感じです。合わせる為に、以下のようにFlgも配列にしようと試みましたが、書き方が悪いらしくエラーになってしまいます。ご存知でしたら教えてください。

 Dim flg as Valiant ←subの外に設定(boolenやStringやIntegerなどいろいろ指定してみましたが・・・うまくいきません。)

 Private sub XXX
  Dim start, stop As String
  start = CurDir & "\start.gif"
  stop = CurDir & "\stop.gif"
 
  If flg(i) = True Then  ←ここで型エラー
    Command1(i).Picture = LoadPicture(start)
    flg(i) = false
  Else
    Command1(i).Picture = LoadPicture(stop)
    flg(i) = true
  End if
 end sub


Geo=TK3  2005-09-07 00:40:57  No: 124954

> Dim flg as Valiant ←subの外に設定(boolenやStringやIntegerなどいろいろ指定してみましたが・・・うまくいきません。)

ここを

Dim flg(...) As Variant

と Variant 型の配列として宣言してみてください。
Variant 型自体には配列も格納できますが、事前に配列値を代入しない
限り flg(i) という書式は使えなかったような記憶があります。


初心者2  2005-09-07 00:55:37  No: 124955

Geo=TK3 さんありがとうございます。教えていただいた方法
  Dim flg(配列数を指定) As Variant
で私のやりたかったことができました!


通ってみた  2005-09-07 02:22:08  No: 124956

解決されていますが、一応残った「PictureBoxから」というやつを

要は先にPictureBoxに画像を読み込んでおいて、それを代入する方法です
例えばPicture1(0)とPicture1(1)にそれぞれ停止と再生の画像を入れておきます

Option Explicitにて
Private PlayStop As Byte

Command1_Clickにて
PlayStop = PlayStop Xor 1
Command1.Picture = Picture1(PlayStop).Picture

とすれば切り替えできる・・・はずです
再生か停止かの状態のフラグは変数PlayStopで判断可能

試してないですが


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加