求助:还是关于抖动的问题。附图片。

squller 2003-11-12 03:41:32
我实在是太笨了,还是没有解决这个问题。我写的编码如下图

http://61.158.234.137/usr/enix/pic/vb.jpg

希望大家能帮我把它修改好,我是新手,还望各位大哥大姐帮忙........
...全文
45 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimurakenshin 2003-11-13
  • 打赏
  • 举报
回复
修改如下:拷贝后再试试,你的代码写的别扭
Option Explicit
Public LoginSucceeded As Boolean
Dim bolFlag As Boolean
Dim num As Integer

Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
txtusername.Text = ""
txtpassword.Text = ""
End Sub

Private Sub cmdOK_Click()
'检查正确的密码
Timer1.Enabled = True
'设置timer为真
num = 0
Timer1.Interval = 100
'0.1秒一次
Timer1.Enabled = False

If txtusername.Text = "song" And txtpassword.Text = "123456" Then
'将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
MsgBox "OK"
Me.Hide
Else
Timer1.Enabled = True
End If
End Sub
Private Sub Timer1_Timer()
If bolFlag And num < 4 Then
Me.Left = Me.Left + 200
ElseIf Not bolFlag And num < 4 Then
Me.Left = Me.Left - 200
End If
bolFlag = Not bolFlag
num = num + 1
txtpassword.SetFocus
txtusername.Text = ""
txtpassword.Text = ""
SendKeys "{Home}+{End}"
End Sub

squller 2003-11-13
  • 打赏
  • 举报
回复
结束帖子,浪客 20 分
pigsanddogs 2003-11-12
  • 打赏
  • 举报
回复
你的代码有问题
VB是事件驱动
不能在事件中嵌套事件

不是吧?
我在command1_click()里面
可以call command2_click 呀!
squller 2003-11-12
  • 打赏
  • 举报
回复
首先感谢goldstar3000(金星) 的帮忙

但是你中间缺少一个end if

而且没有晃动效果
goldstar3000 2003-11-12
  • 打赏
  • 举报
回复
你的代码有问题
VB是事件驱动
不能在事件中嵌套事件
你运行会有问题
现将你的代码更改如下

Option Explicit
Public LoginSucceeded As Boolean
Dim bolFlag As Boolean
Dim num As Integer

Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
txtUserName.Text = ""
txtPassword.Text = ""
End Sub

Private Sub cmdOK_Click()
'检查正确的密码
Timer1.Enabled = True
'设置timer为真
num = 0
Timer1.Interval = 100
'0.1秒一次
Timer1.Enabled = False

If txtUserName = "song" And txtPassword = "123456" Then
'将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
Form1.Show
Me.Hide
Else
Timer1.Enabled =True
End Sub
Private Sub Timer1_Timer()
If bolFlag And num < 4 Then
Me.Left = Me.Left + 200
If Not bolFlag And num < 4 Then
Me.Left = Me.Left - 200
End If
bolFlag = Not bolFlag
num = num + 1
txtPassword.SetFocus
txtUserName.Text = ""
txtPassword.Text = ""
SendKeys "{Home}+{End}"
End If
End Sub
squller 2003-11-12
  • 打赏
  • 举报
回复
我还是把我的意图说出来吧

首先出现登陆提示框,如果用户是song ,密码是123456的话,允许进入,显示form1

如果按取消,清空text框,如果密码或用户名错误,则frmlogin,左右晃动,切清空text框。
squller 2003-11-12
  • 打赏
  • 举报
回复
我们还是说这个吧

总是提示说缺少 end sub,然后在 Private Sub cmdOK_Click() 上面有个黄色全选的提示。

Option Explicit
Public LoginSucceeded As Boolean
Dim bolFlag As Boolean
Dim num As Integer

Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
txtUserName.Text = ""
txtPassword.Text = ""
End Sub

Private Sub cmdOK_Click()
'检查正确的密码
Timer1.Enabled = True
'设置timer为真
num = 0
Timer1.Interval = 100
'0.1秒一次
Timer1.Enabled = False

If txtUserName = "song" And txtPassword = "123456" Then
'将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
Form1.Show
Me.Hide
Else
Private Sub Timer1_Timer()
If bolFlag And num < 4 Then
Me.Left = Me.Left + 200
If Not bolFlag And num < 4 Then
Me.Left = Me.Left - 200
End If
bolFlag = Not bolFlag
num = num + 1
txtPassword.SetFocus
txtUserName.Text = ""
txtPassword.Text = ""
SendKeys "{Home}+{End}"
End If
End Sub
End Sub
squller 2003-11-12
  • 打赏
  • 举报
回复
: passer_wave(路人) 兄弟的方法是让上面的兰色shell闪烁。

不是我要的让对话框左右晃动。

我在上面写的有图片地址,麻烦大家看一看。是关于我的意图的。
  • 打赏
  • 举报
回复
不知楼主是不是这个意思。


Option Explicit
Dim aab As Long '此变量用于存取窗口的句柄
Private Declare Function GetActiveWindow _
Lib "user32" () As Long '获取活动窗口的句柄
Private Declare Function FlashWindow _
Lib "user32" ( _
ByVal hwnd As Long, _
ByVal bInvert As Long _
) As Long
'hwnd 要闪烁显示的窗口的句柄
'binvert TRUE(非零)表示闪烁,FLASE返回最初状态

Private Sub Command1_Click()
Timer1.Enabled = True
'允许闪烁
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
Call FlashWindow(aab, CLng(False))
'停止闪烁,返回最初状态
End Sub

Private Sub Form_Activate()
aab = GetActiveWindow()
'得到该窗口的句柄(一定要在activate事件或其后调用,否则获得的句柄无效)
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 500
'闪烁间隔时间
End Sub

Private Sub Timer1_Timer()
Dim lRtn As Long
'每执行一次便闪烁一次
lRtn = FlashWindow(aab, CLng(True))
End Sub
squller 2003-11-12
  • 打赏
  • 举报
回复
上面写的那个可以使用,但是添加到我写的那个里面就不行了...........

ToT,我真笨啊!
squller 2003-11-12
  • 打赏
  • 举报
回复
就是左右的晃动.......

最后停下来。

类似于摇头的效果,放在login里面。

Dim bolFlag As Boolean
Dim num As Integer

Private Sub Command1_Click()
Timer1.Enabled = True
num = 0
End Sub

Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()

If bolFlag And num < 4 Then
Me.Left = Me.Left + 200

End If
If Not bolFlag And num < 4 Then
Me.Left = Me.Left - 200

End If

bolFlag = Not bolFlag

num = num + 1
End Sub
海牛 2003-11-12
  • 打赏
  • 举报
回复
什么抖动????
squller 2003-11-12
  • 打赏
  • 举报
回复
兄弟们,帮忙啊
squller 2003-11-12
  • 打赏
  • 举报
回复
代码如下

Option Explicit
Public LoginSucceeded As Boolean
Dim bolFlag As Boolean
Dim num As Integer

Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
txtUserName.Text = ""
txtPassword.Text = ""
End Sub

Private Sub cmdOK_Click()
'检查正确的密码
Timer1.Enabled = True
'设置timer为真
num = 0
Timer1.Interval = 100
'0.1秒一次
Timer1.Enabled = False

If txtUserName = "song" And txtPassword = "123456" Then
'将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
Form1.Show
Me.Hide
Else
Private Sub Timer1_Timer()
If bolFlag And num < 4 Then
Me.Left = Me.Left + 200
If Not bolFlag And num < 4 Then
Me.Left = Me.Left - 200
End If
bolFlag = Not bolFlag
num = num + 1
txtPassword.SetFocus
txtUserName.Text = ""
txtPassword.Text = ""
SendKeys "{Home}+{End}"
End If
End Sub
End Sub

7,789

社区成员

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

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