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

解決


初心者2  2005-09-06 13:28:22  No: 124948  IP: [192.*.*.*]

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

編集 削除
ささ  2005-09-06 13:38:41  No: 124949  IP: [192.*.*.*]

VB6であるならば、

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

編集 削除
通ってみた  2005-09-06 13:46:46  No: 124950  IP: [192.*.*.*]

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

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

とか

編集 削除
初心者2  2005-09-06 14:25:13  No: 124951  IP: [192.*.*.*]

さささん、通ってみたさんありがとうございます。半分だけうまくいきました。(試したのはファイルからの方法です。)
以下のように記述していて、最初に▼→■にはなるのですが、■→▼に戻りません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 14:43:54  No: 124952  IP: [192.*.*.*]

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

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

編集 削除
初心者2  2005-09-06 15:32:11  No: 124953  IP: [192.*.*.*]

開発環境は、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-06 15:40:57  No: 124954  IP: [192.*.*.*]

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

ここを

Dim flg(...) As Variant

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

編集 削除
初心者2  2005-09-06 15:55:37  No: 124955  IP: [192.*.*.*]

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

編集 削除
通ってみた  2005-09-06 17:22:08  No: 124956  IP: [192.*.*.*]

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

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

Option Explicitにて
Private PlayStop As Byte

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

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

試してないですが

編集 削除