| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 982 人关注过本帖
标题:如何多次定义控件位置?
只看楼主 加入收藏
qq361161637
Rank: 1
等 级:新手上路
威 望:1
帖 子:15
专家分:0
注 册:2015-4-1
结帖率:75%
收藏
 问题点数:0 回复次数:12 
如何多次定义控件位置?
我在窗体上创建了一列check 控件,另有一个text控件。
我想实现在选中哪个check控件时,text控件在ckeck控件下方显示,第一个ckeck控件选中时,正常,再选其他控件时仍在第一个控件的位置旁。
如何解决?请指教。

语句如此定义的,有何问题?
 Private Sub HeLiFou_Click(Index As Integer)
    text.top=helifou(index).top+helifou(index).width
end sub
搜索更多相关主题的帖子: 如何 
2015-07-04 10:32
vbhello
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-5-9
收藏
得分:0 
试下句子改成这样:text.top=helifou(index).top+helifou(index).height
2015-07-04 13:41
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 qq361161637
Dim x As Integer

Private Sub Check1_Click(Index As Integer)
If x <> -1 Then
   Check1(x).Value = Unchecked
End If
x = Index
Text1.Left = Check1(Index).Left
End Sub

Private Sub Form_Load()
For i = 0 To 3
   Check1(i).Value = Unchecked
Next i
x = -1
End Sub
2015-07-05 21:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
程序代码:
Private Sub Form_Load()
    Call HeLiFou_Click(0)
End Sub

Private Sub HeLiFou_Click(Index As Integer)

Dim 间隔 As Long
间隔 = 5 * Screen.TwipsPerPixelY    '行距,5像素

Dim i As Long

'把 text上面的 HeLiFou 部分排好来
For i = 1 To Index
    HeLiFou(i).Top = HeLiFou(i - 1).Top + HeLiFou(i - 1).Height + 间隔
Next i

If HeLiFou(Index).Value = vbChecked Then        '如果选中
    '排text 框
    Text1.Visible = True
    Text1.Top = HeLiFou(Index).Top + HeLiFou(Index).Height
    
    '排 text 下面的第一个 HeLiFou
    If Index + 1 < HeLiFou.Count Then
        HeLiFou(Index + 1).Top = Text1.Top + Text1.Height + 间隔
    End If
Else                                            '未选中,就不需要排 text框了
    '此处:如果还有已选中的,但本次是未选中,也会造成隐藏 text1 框
    '如果不想产生此问题,那应该是不应该使用 ComboBox ,而应该使用 OptionButton
    Text1.Visible = False
    If Index + 1 < HeLiFou.Count Then
        HeLiFou(Index + 1).Top = HeLiFou(Index).Top + HeLiFou(Index).Height + 间隔
    End If
End If

'剩下的所有 HeLiFou
For i = Index + 2 To HeLiFou.Count - 1
    HeLiFou(i).Top = HeLiFou(i - 1).Top + HeLiFou(i).Height + 间隔
Next i

End Sub


问的问题题就有问题。
我的代码是 文本框跟着控件跑,并且控件会自动排列好来,不会产生太多的空隙。

授人于鱼,不如授人于渔
早已停用QQ了
2015-07-05 22:56
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 楼主 qq361161637
textbox在check下边吧。
如果在窗体设计的时候第1个check和文本框左对齐。那就一行代码
Private Sub Check1_Click(Index As Integer)
  Text1.Left = Check1(Index).Left
End Sub
要注意多个check的选择是不是互不相容。

大开眼界
2015-07-06 09:12
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
Check当然是多选的,要让它互不相容要专门写代码来实现。或干脆换用option
2015-07-06 10:19
qq361161637
Rank: 1
等 级:新手上路
威 望:1
帖 子:15
专家分:0
注 册:2015-4-1
收藏
得分:0 
我的想法是定义text框的位置跟随在checkbox的附近。其他功能现在没有问题。只是text文本框一直在第一个checkbox(0)的附近,不能到其他check(index)附近
2015-07-07 11:31
qq361161637
Rank: 1
等 级:新手上路
威 望:1
帖 子:15
专家分:0
注 册:2015-4-1
收藏
得分:0 
Private Sub HeLiFou_Click(Index As Integer)
    text.top=helifou(index).top+helifou(index).height
end sub

现在只在第一个即  HeLiFou(0)  的下方显示,选择其他 HeLiFou() 的时候text的位置没有变化
2015-07-07 15:20
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 9楼 qq361161637
至少有两种可能。
1、没仔细看五楼回复;
2、不了解文本框的Top和Left属性。
9楼代码只给Top赋了值,只对文本框的上下位置有影响。左右位置没变化。
另外不知是如何命名的文本框,代码中关键字全是小写。

大开眼界
2015-07-07 16:34
qq361161637
Rank: 1
等 级:新手上路
威 望:1
帖 子:15
专家分:0
注 册:2015-4-1
收藏
得分:0 
忘记说明了,每个checkbox控件都在一个小的框架控件里面,所有的小框架控件在一个大的框架控件里面。check(index)和frame(index) index相同

text控件控制 跟随在小的框架控件frame(index)附近显示没有任何问题,一旦使用check控件的属性就出错。
2015-07-08 08:22
快速回复:如何多次定义控件位置?
数据加载中...
 
   



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

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