'先在属性窗口里面将Label1的Index改为0 Dim L(0 to 89) as string Dim i as Long L(0)="Label00" Label1(0).Caption=L(0) for i=1 to 89 Load Label1(i) L(i)="Label"+Right("0"+CStr(i),2) Label1(i).Caption=L(i) Label1(i).Top=i\10*150 Label1(i).Left=60+(i mod 10)*960 Label1(i).Zorder 0 next
'假设你的窗口只有那90个Label '或你需要处理的那90个Label是最后按顺序画上去的 Private arrLab(89) As LabelPrivate Sub Command1_Click() Dim i&, objTemp As Object i = 0 For Each objTemp In Me.Controls If (Left$(objTemp.Name, 5) = "Label") Then Set arrLab(89 - i) = objTemp '建立关联 i = i + 1 End If Next '检查一下结果 For i = 0 To 89 Debug.Print i, arrLab(i).Left; arrLab(i).Top, arrLab(i).Caption Next End Sub楼主参考一下吧。
汗,楼主真有毅力,PFPF- -!!其实以象棋来说的话,可以自己绘图,而不需要用那么多的Label控件.先定义一个结构,它用于管理棋子:type MYTYPE mX as long '在棋盘上的坐标 mY as long mPic as long '这个棋子的图片,你做一个包含所有象棋图片的图片,再用索引去决定是哪个 mSel as boolean '是否被选中,点击棋子时需要绘出被选择的效果 end type然后定义一个数组,这个数组里就是棋子的数据:dim mData() as MYTYPE接下来,首先绘制棋盘,然后根据坐标绘制棋子就行了.鼠标点击处能得到当前的坐标,则使用这个坐标去遍历这个数组,看看与哪个坐标的距离是在棋子圆周内,则说明点击了这个棋子.啊,大约就是这样的思路吧,代码应该能少很多:)睡觉睡觉.
然后就创建了
Dim L(0 to 89) as string
Dim i as Long
L(0)="Label00"
Label1(0).Caption=L(0)
for i=1 to 89
Load Label1(i)
L(i)="Label"+Right("0"+CStr(i),2)
Label1(i).Caption=L(i)
Label1(i).Top=i\10*150
Label1(i).Left=60+(i mod 10)*960
Label1(i).Zorder 0
next
其实我是做一个自己玩的象棋棋谱, 这样做好像很笨,用90个picturebox铺满棋盘,然后编写他们的点击事件,然后这样可以让棋子走到想要的位置,这样顺便定位棋盘
但是由于时间关系,又不知道有什么方法,我真的一个个写了o(-"-)o
你为啥不直接用Label或者PictureBox在窗体上定位当棋子呢?
Option Explicit
'假设你的窗口只有那90个Label
'或你需要处理的那90个Label是最后按顺序画上去的
Private arrLab(89) As LabelPrivate Sub Command1_Click()
Dim i&, objTemp As Object
i = 0
For Each objTemp In Me.Controls
If (Left$(objTemp.Name, 5) = "Label") Then
Set arrLab(89 - i) = objTemp '建立关联
i = i + 1
End If
Next
'检查一下结果
For i = 0 To 89
Debug.Print i, arrLab(i).Left; arrLab(i).Top, arrLab(i).Caption
Next
End Sub楼主参考一下吧。
控件建立后再对应数组就比较繁琐了
我当初将picturebox复制、粘贴不知道为什么没有提示建立数组的... - -
窗体坐标整除棋盘格子尺寸就是棋盘坐标。
棋盘坐标乘以棋盘格子尺寸就是窗体坐标。
把正方形PictureBox定位到窗体坐标减去1/2正方形PictureBox的尺寸,就可以让PictureBox中心对准窗体坐标。
前提是你要将窗体的ScaleMode从twip改成pixel。
一点不难啊!
你为啥要用90个控件去定位呢?那个要活活累死人的!
mX as long '在棋盘上的坐标
mY as long mPic as long '这个棋子的图片,你做一个包含所有象棋图片的图片,再用索引去决定是哪个
mSel as boolean '是否被选中,点击棋子时需要绘出被选择的效果
end type然后定义一个数组,这个数组里就是棋子的数据:dim mData() as MYTYPE接下来,首先绘制棋盘,然后根据坐标绘制棋子就行了.鼠标点击处能得到当前的坐标,则使用这个坐标去遍历这个数组,看看与哪个坐标的距离是在棋子圆周内,则说明点击了这个棋子.啊,大约就是这样的思路吧,代码应该能少很多:)睡觉睡觉.