程式碼
Dim mycolor As Integer
Dim c$(9)
Private Sub Cmdend_Click()
End
End Sub
Private Sub Form_Load()
c$(0) = "138"
c$(1) = "028"
c$(2) = "148"
c$(3) = "0589"
c$(4) = "278"
c$(5) = "369"
c$(6) = "5789"
c$(7) = "468"
c$(8) = "01234679"
c$(9) = "1568"
End Sub
Private Sub Optcolor_Click()
mycolor = Index
End Sub
Private Sub Piccolor_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
For i = 1 To Len(c$(Index))
around_color = Val(Mid$(c$(Index), i, 1))
If Opticolor(mycolor).ForeColor = Piccolor(around_color).BackColor Then
Exit Sub
Next i
Piccolor(Index).BackColor = Optcolor(mycolor).ForeColor
End Sub
現在目的就是點選完顏色後 , 在利用滑鼠點picture內的其中一格 , 使其方格填入顏色 , 但相鄰方格無法填入同顏色 , 這是課本的程式碼但不能run , 我想問題應該出在物件的名稱 , 因為我沒辦法用Piccolor(0)~(9) Optcolor(0)~(3) 只能用picture1 picture2 option1 option2 不知道怎麼用piccolor optcolor 來涵蓋所有的picture 跟option , 還有麻煩各位大大幫我解釋一下這程式碼 , 因為初學所以很多都不太懂 如c$等 謝謝
2005-07-07 10:42:48 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
以整個程式的話…c$的意思是…
ex.c$(0)=138
當妳滑鼠按下picColor(0),則剩下的picColor的1.3.8都不能按,以此類推
※這就是為什麼要用mid來取裡頭的數值…。
Private Sub Optcolor_Click() 裡的 mycolor = Index
意思是把你選取的顏色的按紐的Index存起來,
方便核對,因為後面還有一個Index ※這裡有錯誤…後面會說
其實我是不介意妳用課本後面的程式碼啦!因為通常都Run不出來!只是給妳一個概念!
講解一下它要的意思:
For i = 1 To Len(c$(Index))
Len是看c$(index)裡頭放的有多少個字元
(index是指你點到Piccolor(?)裡的問號數值)
for在這的意思是看要跑幾次,才能全部核對過你點到的四周有沒有在點到。
around_color = Val(Mid$(c$(Index), i, 1))
很明顯around_color指是個變數名稱,可以不要用那麼長的,只是在過程中好了解
這時候迴圈開始跑了,mid的意思是從c$(Index)裡的第i個字取一個字元出來
如果你c$裡有三個字元就會跑三次。
If Opticolor(mycolor).ForeColor = Piccolor(around_color).BackColor Then Exit Sub
Opticolor(mycolor).ForeColor 這句是你點到的Opticolor上面的字體顏
色(如果沒錯字是有顏色的)mycolor是剛剛我們存好的Opticolor選到的Index值。
Piccolor(around_color).BackColor 我們點到的圖四周圖片的顏色
這個if是看妳現在所點選的顏色,跟你所要填滿顏色的圖片四周有沒有一樣的顏色
如果有一樣,則跳出這個Sub(整個程式不做)
next i
結束這個迴圈
Piccolor(Index).BackColor = Optcolor(mycolor).ForeColor
如果四周沒有一樣的(如果有剛剛就會Exit Sub了)那你選的圖片Piccolor(Index)
的BackColor(背景色,也就是整張圖的顏色)會是選到的Optcolor的字體顏色。
==================================================
解釋完了…我來說說為什麼不能Run
有三個地方錯了
第一:Private Sub Optcolor_Click() <==錯了
mycolor = Index
End Sub
有Index,後面就會有(index As Integer),所以應改為
Private Sub optColor_Click(index As Integer)
mycolor = Index
End Sub
第二:Private Sub Piccolor_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single) 最後一段程式的地方
一樣,它有用到Index,所以要改為
Private Sub Piccolor_MouseDown(index As Integer, Button As
Integer, Shift As Integer, X As Single, Y As Single)
第三:If Opticolor(mycolor).ForeColor = Piccolor
(around_color).BackColor Then Exit Sub (這是一行程式)
錯就錯在Opticolor<===它多打了一個 『i』要改為
If Optcolor(mycolor).ForeColor = Piccolor
(around_color).BackColor Then Exit Sub (還是一行程式)
這樣應該就能執行了…如有問題…即時通可以留言給我^^-
2005-07-09 21:05:47 · answer #1 · answered by Anonymous · 0⤊ 0⤋
Piccolor(0)~(9) Optcolor(0)~(3) 這個是用元件陣列
就是要新增多個同元件時,希望可以用陣列的方式來操控
而設計的方法就是,先新增一個,然後用複製,貼上,貼上時會問你是不是要用陣列,此時回答是就行了。
C$是dos時代宣告字串變數的用法,和dim c(9) as string意思相同
2005-07-07 11:57:59 · answer #2 · answered by 上官 5 · 0⤊ 0⤋