| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖, 1 人收藏
标题:返回初始位置
只看楼主 加入收藏
没得选择
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:11 
返回初始位置
Dim startright As String
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 1
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
startright = Text1.Left
End Sub

Private Sub HScroll1_Change()
Timer1.Interval = 10 * HScroll1.Value / 10
End Sub

Private Sub Timer1_Timer()
Text1.Left = Text1.Left + 20
If Text1.Left < 0 Then
Text1.Left = startright
End If
End Sub
问一下,这个代码为什么用“Text1.Left = Text1.Left - 20
”就能实现Text1.Left = startright,,而Text1.Left = Text1.Left + 20,就不能实现text1.left=startright
我做的是一个自己会移动的text1。在这里,先谢谢了!
2014-04-17 12:03
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
关键是“If Text1.Left < 0 Then”这一句,你认为如果不断地Text1.Left = Text1.Left + 20,Text1.Left的值还有可能小于0吗?如果Text1.Left永远不能小于0,那么Text1.Left 就永远不能等于startright了。
2014-04-17 12:41
没得选择
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 2 楼 lowxiong
只想着语法出问题,没想过这个,你这样一说就明白了。十分感谢!
2014-04-17 15:22
没得选择
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 2 楼 lowxiong
那要怎么改,才能text1.left=startleft
2014-04-17 15:25
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这个好弄吧  左侧 你想让他移动到哪里终止  右侧 你想让他移动到哪里终止  根据坐标自己换算吧

DO IT YOURSELF !
2014-04-17 15:49
没得选择
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 5 楼 wp231957
我要他从初始位置移动到右侧,然后从右侧移动到初始位置,这样一直循环。要做到这样的效果,代码要怎么写?
2014-04-17 17:05
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
If Text1.Left > me.width Then
2014-04-17 17:20
没得选择
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
收藏
得分:0 
回复 7 楼 lowxiong
我想要text1从初始位置移到到右侧,再从右侧移动到初始位置,一直循环,又要加什么代码?
2014-04-17 17:55
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:10 
移动前加判断
Dim LeftToRight as Boolean    '由左向右移

Private Sub Form_Load()
Timer1.Enabled = False
LeftToRight = True
End Sub

Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 1

End Sub

Private Sub Timer1_Timer()
If LeftToRight = True then
    If Text1.Left = Me.Width-Text1.Width then    'Text1的右边和窗体右边对齐
        Text1.Left = Text1.Left - 20    'Text1左移
        LeftToRight = False    ’左移
    ElseIf Text1.Left + 20 >= Me.Width-Text1.Width then    'Text1右移后的右边和窗体右边对齐
        Text1.Left = Me.Width-Text1.Width
        LeftToRight = False
    Else
        Text1.Left = Text1.Left + 20
    endif
else
    If Text1.Left = 0 then
        Text1.Left = Text1.Left + 20
        LeftToRight = True
    ElseIf Text1.Left - 20 <= 0 then
        Text1.Left = 0
        LeftToRight = True
    Else
        Text1.Left = Text1.Left - 20
    Endif
Endif

End Sub
2014-04-18 22:21
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:10 
'代码这样不是更简单?还可以暂停,把步进值设为30,是因为在图形单位为緹时,30是2个像素,可以平滑移动
Dim mF As Integer, startPos As Integer
Private Sub Form_Load()
  mF = 30
  startPos = Text1.Left                                                 '初始位置
  Timer1.Enabled = False
End Sub

Private Sub Command1_Click()
  Timer1.Enabled = Timer1.Enabled Xor True                              '暂停或继续
  Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
  If Text1.Left >= Me.ScaleWidth - Text1.Width Then mF = -30            '达右边界立即左移
  If Text1.Left < startPos Then mF = 30                                 '达初始位置则右移
  Text1.Left = Text1.Left + mF
End Sub


[ 本帖最后由 lowxiong 于 2014-4-18 23:44 编辑 ]
2014-04-18 23:10
快速回复:返回初始位置
数据加载中...
 
   



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

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