• ベストアンサー

ビジュアルベーシックのお絵かき掲示板

まったくの初心者です。初歩的な質問で申し訳ありません。 カラーのところでクリックが実行できません。 なぜなのかよくわかりません。お暇なときご教授下さい。  そしてもう一つ質問ですが以下のコードを追加したいの ですがどこに挿入すればいいのですか。 →private sub image_click() ccolor = 7 end sub ここまでのコードを追加したいです。 ーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Command1_Click() Form1.Cls End Sub Private Sub Command2_Click() End End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.DrawWidth = 3 If Button = 1 Then PSet (X, Y), QBColor(ccolor) End If End Sub Private Sub Label1_Click() cccolor = 14 End Sub Private Sub lavel2_click() cccolor = 0 End Sub Private Sub label3_click() ccolor = 9 End Sub Private Sub label4_click() ccolor = 12 End Sub Private Sub label5_click() ccolor = 10 End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • pikero
  • ベストアンサー率100% (4/4)
回答No.3

#2です。1も2も分からないといった状況ということですね。 >コードと作ったオブジェクトをどうつなぐのかがわかりません。 まずプログラムを実行した時、何かしらの[アクション]により実行される部分の 最小単位を[プロシージャ]と呼びます。 例えば[Private Sub Label1_Click()]から[End Sub]までの部分です。 意味としては、[Label1]というオブジェクトが[Click]されたら、この間にある コードを実行しなさい。という命令です。 ここで注意しなければならないのは、[Label1]という名前です。 [Label1]というのは[オブジェクトを識別する名前]であり、太郎さんなのか次郎 さんなのか、という区別する名前です。 例えば[ボタン]オブジェクトに[Label1]という名前を付けることも出来ますし、 [ラベル]オブジェクトに[List1]という名前をを付けることも出来ます。これはち ょうど、犬に[タマ]、猫に[ポチ]という名前を付けることに良く似ています。 話を戻しまして、[Label]オブジェクトをフォーム上に配置すると標準で[Label1] …[Label2]…[Label3]、という風に名前が付けられます。この名前は通常[重複] してはいけませんが、VB6の場合はオブジェクト配列として扱う事が出来ます。 しかしここでは深く語りません。 この[オブジェクトを識別する名前]を理解したところで、本題です。 >コードと作ったオブジェクトをどうつなぐのかがわかりません。 >カラーのところでクリックが実行できません。 ということなので、配置したオブジェクトとコードの名前が一致していないので はないでしょうか? 例えば、プロパテイの[オブジェクト名]が[OBJ]という名前のオブジェクトを クリックアクション時に実行する[プロシージャ]は[Private Sub OBJ_Click()] とする必要があります。 >コードをどこに挿入すればいいのですか? 基本的に順番はありませんのでどこに記述してもかまいませんが、一点だけ注意が必要です。 [プロシージャ]はネストすることは出来ませんので、例えば [Private Sub Label1_Click()]から[End Sub]までの間の部分には記述出来ません。 お分かり頂けましたでしょうか?

mika5
質問者

お礼

二番さん、詳しい説明有り難うございました。一番さんにも感謝です。ようやくつかめてきました。また質問するときは宜しくお願い致します。

その他の回答 (2)

  • pikero
  • ベストアンサー率100% (4/4)
回答No.2

少しスマートに手直し(labelは全てimage1の配列に,Command1も配列) Option Explicit Dim ccolor As Long Private Sub Form_load() Form1.DrawWidth = 2 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static X2, Y2 As Single If Button = 1 Then Line (X, Y)-(X2, Y2), QBColor(ccolor) X2 = X: Y2 = Y End Sub Private Sub image1_Click(Index As Integer) Select Case Index Case 0: ccolor = 0 Case 1: ccolor = 7 Case 2: ccolor = 9 Case 3: ccolor = 10 Case 4: ccolor = 12 Case 5: ccolor = 14 End Select End Sub Private Sub Command1_Click(Index As Integer) Select Case Index Case 0: Form1.Cls Case 1: Unload Me End Select End Sub

mika5
質問者

補足

お返事有り難うございます。一番さんの補足に書いた通り のことで今悩んでおります。コードと作ったオブジェクトをどうつなぐのかがわかりません。実行をしても黒いカラーだけがでてしまいます。お時間があるときご存知でしたらアドバイス下さい。

回答No.1

質問がわかりづらいです。 何となく想像はつきますが... >カラーのところでクリックが実行できません。 カラーのところって? Labelxx_Clickのところでしょうか? 実行できませんとは? ???という動作を期待しているのに、 ???なってしまうのでしょう? cccolor と ccolor の違いと型は? 単に転記ミス?(lavel2_clickってなってるし...) 余談1 >Private Sub Command2_Click() >End >End Sub Endは使わない方が良いです。 終わらせたいなら、Unload Meにしましょう。 余談2 私の場合は、ラベルはコントロール配列にして... Private Sub Label1_Click(Index as Integer) Select Case Index case 0: cccolor = 14 case 1: cccolor = 0 ・ ・ ・ End Select End Sub

mika5
質問者

補足

お返事有り難うございます。ご指摘されたところを手直ししました。ソースを記述しなおしたものと+プロパティウィンドウをさわりながらつくったオブジェクトを実行してもできませんでした。アドバイス、お時間があるとき下さい。