标题:请大人们帮忙指出错在哪了~~
只看楼主
撒旦柚子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-12
结帖率:100%
已结贴  问题点数:20 回复次数:9 
请大人们帮忙指出错在哪了~~
建立一个类似国际象棋的棋盘,设计界面和运行界面如下图所示。要求:
(1)在设计窗体上放一个 Label 控件,设置其Index 属性为0,BackColor为黑色。Visible属性为Fales。
(2)程序运行时自动产生64个Label控件数组元素, BackColor 黑白交替
(3)当程序运行后单击某个棋格,改变BackColor 颜色,即白变黑、黑变白。并在单击的棋格处显示其序号。
(4) 单击棋格的数字之和大于等于90时,弹出一信息框,确定后退出程序
Dim mtop As Integer, mleft As Integer, i As Integer, j As Integer, n As Integer
Private Sub Form_Load()
mtop = 0                        
For i = 1 To 8
  mleft = 50                     
    For j = 1 To 8
     k = (i - 1) * 8 + j
     Load Label1(k)
     Label1(k).BackColor = IIf((i + j) Mod 2 = 0, QBColor(0), QBColor(15))
     Label1(k).Visible = True
     Label1(k).Top = mtop
     Label1(k).Left = mleft
     mleft = mleft + Label1(0).Width
    Next j
  mtop = mtop + Label1(0).Height
Next i

End Sub

Private Sub Label1_Click(Index As Integer)
Do
Label1(Index).FontBold = True
Label1(Index).ForeColor = RGB(255, 0, 0)  
Label1(Index).Caption = Index
n = n + Label1(Index).Caption
For i = 1 To 8      
  For j = 1 To 8
    k = (i - 1) * 8 + j
  If Label1(k).BackColor = RGB(0, 0, 0) Then  
    Label1(k).BackColor = RGB(255, 255, 255)  
  Else
    Label1(k).BackColor = RGB(0, 0, 0)
 End If
 Next j
Next i
Loop Until n > 90

MsgBox "数据溢出", , "警告"

End Sub
-------------------------------------------------------------------------------------------------------
我不知道label1_click里哪里编错了 运行后每点击一次都会出弹出msgbox
请大人们帮我指出错误
如果有更简单的方法 也请大人们教教我

[ 本帖最后由 撒旦柚子 于 2009-10-25 21:30 编辑 ]
搜索更多相关主题的帖子: 大人们 
2009-10-25 12:03
msgj
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:190
专家分:914
注 册:2009-10-3
得分:10 
在 n = n + Label1(Index).Caption 中,值类型不一样,
用 n = n + val(Label1(Index).Caption)
2009-10-25 12:52
撒旦柚子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-12
得分:0 
我用过的 但是也不行~~
2009-10-25 13:24
msgj
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:190
专家分:914
注 册:2009-10-3
得分:10 
你把  'MsgBox "数据溢出", , "警告" 注释掉呀!
2009-10-25 15:42
撒旦柚子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-12
得分:0 
可是题目要求 :单击棋格的数字之和大于等于90时,弹出一信息框 提示数据溢出才行~!

 

[ 本帖最后由 撒旦柚子 于 2009-10-25 19:25 编辑 ]
2009-10-25 18:57
撒旦柚子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-12
得分:0 
Dim n%
Dim mtop As Integer, mleft As Integer, i As Integer, j As Integer
Private Sub Form_Load()
 
mtop = 0                         ' 棋盘顶边初值
For i = 1 To 8
  mleft = 50                     ' 棋盘左边位置
    For j = 1 To 8
     k = (i - 1) * 8 + j
     Load Label1(k)
     Label1(k).BackColor = IIf((i + j) Mod 2 = 0, QBColor(0), QBColor(15))
     Label1(k).Visible = True
     Label1(k).Top = mtop
     Label1(k).Left = mleft
     mleft = mleft + Label1(0).Width
    Next j
  mtop = mtop + Label1(0).Height
Next i
 
End Sub
 
Private Sub Label1_Click(Index As Integer)
 
Label1(Index).FontBold = True
Label1(Index).ForeColor = RGB(255, 0, 0)  '设置标签前景色为红色
Label1(Index).Caption = index
For i = 1 To 8       '对每一个棋格重新填充颜色
  For j = 1 To 8
    k = (i - 1) * 8 + j
  If Label1(k).BackColor = RGB(0, 0, 0) Then  '背景色为黑
    Label1(k).BackColor = RGB(255, 255, 255)  '背景色为白
  Else
    Label1(k).BackColor = RGB(0, 0, 0)
 End If
 Next j
Next i
n = n + Val(Label1(Index).Caption)
If n > 90 Then
 
 
MsgBox "数据溢出", , "警告"
End If
End Sub
----------------------------------------------------------------------------------------------------------
我同学帮我改的 用if语句做的
可以做出来
----------------------------------------------------------------------------------------------------------
谢谢帮忙了


[ 本帖最后由 撒旦柚子 于 2009-10-26 06:51 编辑 ]
2009-10-25 21:28
mafia3k
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2009-10-12
得分:0 
回复 6楼 撒旦柚子
兄弟,别人替你做事要花时间和脑力,做了事要讲效益,你觉得你这能产生什么多大的效益?还发牢骚?
2009-10-25 22:11
撒旦柚子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-10-12
得分:0 
回复 7楼 mafia3k
我以为这样一个程序对于VB精通的人而言只是一个但简单的小程序
诚然 我问的这个程序的确是没什么效益的东西
但是作为一个初学者 我只是以学习的态度来询问可以教一教我的人
也很感谢愿意帮 给我指出错误的人 花费了你们的时间
谢谢msgj

并没有所谓的发牢骚 如果我在言语上有所冒犯 我在这里给那些给我帮忙的人表示歉意 对不起!
还有 7L 我不喜欢注水肉 请不要在我的帖子里灌水!


[ 本帖最后由 撒旦柚子 于 2009-10-25 22:46 编辑 ]
2009-10-25 22:33
mafia3k
Rank: 1
等 级:新手上路
帖 子:9
专家分:7
注 册:2009-10-12
得分:0 
回复 8楼 撒旦柚子
哈哈,什么叫灌水,小子,从你最后一句话看的出你很不爽啊。,其实我是无心的,sorry!
我帮你改了下程序,,其他相同,就第二部分改了下,昨天改你这个程序还搞了个死循环出来,呵呵,有什么问题继续交流,其实我也是小虾!
Private Sub Label1_Click(Index As Integer)
Label1(Index).FontBold = True
Label1(Index).ForeColor = RGB(255, 0, 0)
Label1(Index).Caption = Index
n = n + Val(Label1(Index).Caption)
For i = 1 To 8
  For j = 1 To 8
    k = (i - 1) * 8 + j
  If Label1(k).BackColor = RGB(0, 0, 0) Then
    Label1(k).BackColor = RGB(255, 255, 255)
  Else
    Label1(k).BackColor = RGB(0, 0, 0)
End If
Next j
Next i
If n >= 90 Then
MsgBox "数据溢出", , "警告"
End
End If
End Sub
2009-10-26 14:52
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
得分:0 
Private Sub Form_Click()
 On Error Resume Next
   Dim i As Integer, j As Integer
   For j = 0 To 9
    For i = 0 To 9
      Load Label1(i + j * 11)
      Label1(i + j * 11).Visible = True
      Label1(i + j * 11).Left = Label1(0).Left + j * Label1(0).Width
      Label1(i + j * 11).Top = Label1(i - 1).Top + Label1(0).Height
      Label1(i + j * 11).Caption = i + j * 10
      If (i + j * 11) Mod 2 = 0 Then
         Label1(i + j * 11).BackColor = &H0&
       Else
         Label1(i + j * 11).BackColor = &HFFFFFF
      End If
    Next
   Next
End Sub
其实i+j*11 完全可以用一变量代替
后接楼上
2009-10-27 15:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-289851-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040092 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved