希望大家帮忙,能帮我找出错误呀!!!!!!!!!!!!!

lzhqiqicsdn 2003-11-22 12:37:29
望实现的功能为:
先在图片内打出若干个点。
再在鼠标移动到点的上面的时候会显示点的相关信息。
有的控件为:
一个窗体控件,叫Form1
一个图片框控件,叫a
一个按钮控件,叫command1,用来按下去时打点用
还有一个按钮控件,叫qq,用来显示在鼠标移动时的信息
代码如下:
这是图片框控件的MouseMove事件代码:
Private Sub a_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReDim Preserve x_lzh(7)
ReDim Preserve y_lzh(7)
ReDim Preserve point_lzh(7)
For i = 0 To 6
If Abs(X - x_lzh(i)) < 1 Then
For j = 0 To 6
If Abs(Y - y_lzh(j)) < 1 Then
qq.Left = X
qq.Top = Y
qq.Caption = "X=" & x_lzh(i) & Chr(13) & "Y=" & y_lzh(i)
qq.ZOrder (0)
qq.Visible = True
Else
qq.Visible = False
End If
Next
Else
qq.Visible = False
End If
Next
End Sub

这是用来打点的按钮控件的代码:
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
ReDim x_lzh(7)
ReDim y_lzh(7)
ReDim point_lzh(7)
a.Scale (0, 100)-(100, 0)
a.ForeColor = vbGreen
a.DrawWidth = 4
j = 0
For i = 20 To 80 Step 10
a.PSet (i, 50)
x_lzh(j) = i
y_lzh(j) = 50
point_lzh(j) = 50
j = j + 1
Next
End Sub

这是窗体的载入时的代码:
Private Sub Form_Load()
Form1.Scale (0, 100)-(100, 0)
End Sub

这是通用模块的代码:
Global x_lzh()
Global y_lzh()
Global point_lzh()

以上的程序工作是正常的。画图的按钮在按下了以后会在如下的7个坐标上打点:
(20,50),(30,50),(40,50),(50,50),
(60,50),(70,50),(80,50)
并且移动鼠标到点的上面的时候是能显示点的坐标信息的。
!!!!!现在的问题是:!!!!!
如果把用来显示坐标信息的按钮控件更换成label控件的话(名字还是叫qq,代码不变,由于label也有caption属性),就只能在(80,50)这一个点上有提示信息,其余的6个点没有!!!?????我实在是弄不懂呀!!???
望得到大家的指点,谢谢大家了!
...全文
21 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FSoft 2003-11-22
  • 打赏
  • 举报
回复
我没看你的代码,只看了下面少的内容,不知是否理解.
把Label控件放到一个框架中,把框架的边框和内容删除,然后在用框架(Frame)的Zorder试试
lzhqiqicsdn 2003-11-22
  • 打赏
  • 举报
回复
??????
lzhqiqicsdn 2003-11-22
  • 打赏
  • 举报
回复
能告诉我如果用label控件的话。。。。有希望么?应该怎样改才可以呢???
lzhqiqicsdn 2003-11-22
  • 打赏
  • 举报
回复
谢谢呀,好详细呀。我看明白了,你的意思是说由于我的label控件和picture控件不在 同一层,所以我无论怎样更改我的label控件的ZOrder属性都是没有用的,是的么?可是我现在还是有几点疑问:
1。我的程序如果改为用label控件显示信息的时候并不是每一个坐标都不显示的,而是只有(80,50)这个坐标显示,其余的不显示,这是最让我迷惑不解的:如果是代码有错误,那么用CommandBottom控件显示信息时没有错误呀,说明代码没有错误,因此是更换的控件的问题,可是却有的能有信息,有的没有。。。还是代码错误。。。。
2。您说的有三层,如下:
最下一层:显示图形方法结果的绘图空间。
 中间一层:用来显示图形物件(例如 Image) 和 Label 控制项。
 上面一层:显示所有非图形控制项,例如 CommandButton、CheckBox 或 ListBox。
请问,picturebox在最下面的一层吗?shape控件,还有Frame控件呢?
rainstormmaster 2003-11-22
  • 打赏
  • 举报
回复
ZOrder 的迷思?

ZOrder 拆开以后就是 Z 及 Order,其意义说明如下:
Z:这里是指三度空间中的 Z 座标轴 (注一),而不是指英文字母的第 26 个字母。
Order:排列顺序。
所以 ZOrder 就是指在 Z 座标轴上的排列顺序!

ZOrder 语法如下:

object.ZOrder position

--------------------------------------------------------------------------------

object 选择性引数。物件运算式,用来指定「适用于」清单中的物件。
如果省略 object,则假设具有驻点的 Form 物件为 object。
Position 选择性引数。整数,用以指示 object 相对于同一 object 其它执行个体的位置。
如果 position 为 0 或省略,则 object 放置在 z- 顺序前面 (上方)。
如果 position 为 1,则 object 放置在 z- 顺序后面 (下方)。

--------------------------------------------------------------------------------


在设计阶段选取快显功能表中的「移至顶层」或「移至底层」功能表指令,可以设定物件的 z- 顺序。

ZOrder 用在不同的地方,有二种不同的意义:
1、用于 MDIForm 中的 Child Form 时,指的是每一个 Child Form 的上下位置关系。
2、用于每一个 Form 中的所有控制项时,指的是每一个控制项间的上下位置关系。 (注二)

注一:一般我们的二度平面座标轴是指 X 座标轴 (东西向)及 Y 座标轴 (南北向),
   二个轴构成一个平面,再加上垂直的 Z 座标轴,就构成了三度立体空间了!
   所以 ZOrder 指的就是物件在垂直的 Z 座标轴上的上下位置关系。

注二:虽然 ZOrder 指的是物件在垂直的 Z 座标轴上的上下位置关系。
   但是很多人搞不清楚,为什么他已经设定了 ZOrder 了,为什么在某些控制项中是无效的?

   原因是对单一 Form 或 单一 Container 而言,在垂直的 Z 座标轴上又分成三个层次:
   最下一层:显示图形方法结果的绘图空间。
   中间一层:用来显示图形物件(例如 Image) 和 Label 控制项。
   上面一层:显示所有非图形控制项,例如 CommandButton、CheckBox 或 ListBox。
   而 ZOrder 只对单一层次内的控制项有效而已!

   例如:您如果设定 Label 及 Image 的 ZOrder 是有效的,因为它们都在中间一层!
      您如果设定 Label 及 CommandButton 的 ZOrder 是无效的,因为它们在不同层!

   最重要的是:不管 ZOrder 如何设定,
         在上面一层的物件永远会在中间一层的物件的上方!
         在中间一层的物件永远会在最下一层的物件的上方!
lzhqiqicsdn 2003-11-22
  • 打赏
  • 举报
回复
谢谢你的帮助,我已经把qq.ZOrder (0)这句去掉了,可是还是有同样的问题呀!能告诉我应该怎样更改么??????
rainstormmaster 2003-11-22
  • 打赏
  • 举报
回复
qq.ZOrder (0)
问题出在这句



7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧