vb 自定义控件,添加外部事件

vb 自定义控件,添加外部事件,第1张

回调?

回调不是必要的,而且回调可以转换成事件

你可能需要的是触发事件:RaiseEvent

Click()

执行此语句后

你控件的Click就触发了

你可以在窗体中的

contr1_click

里写东西。

简单回调没有通用性;

有兼容性的回调很麻烦。

简单回调:

Dim

f

As

Form

Set

f

=

XXXXX

'(Your

Form)

Call

f.aa()

可以啊,用api添加计时器

Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

在窗口的load事件里添加代码,

SetTimer Me.hWnd, 0, 100, AddressOf TimerProc ‘timerproc就是你要执行的过程,100是每100毫秒执行一次。

至于你说的时间精度不准,应该是用api取出毫秒级的时间,用now当然不准了。

Private Type uSystemTime

wYear As Integer

wMonth As Integer

wDayOfWeek As Integer

wDay As Integer

wHour As Integer

wMinute As Integer

wSecond As Integer

wMilliseconds As Integer

End Type

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As uSystemTime)

'*********************************************************************************************

'名称 Fun_GetLocalTime

'作者 MornWoo20071016

'功能 获取系统的时间,精确到毫秒。

'参数 无

'返回 返回字符串数据: iFormat = 0,"YYYY-MM-DD HH:MM:SS"+" " + "毫秒数"iFormat=1,yyyymmddhhmmss毫秒数

' iFormat = 2,"YYYY-MM-DD HH:MM:SS"

'*********************************************************************************************

Function Fun_GetLocalTime(Optional ByVal iFormat = 0) As String

Dim uSysTime As uSystemTime

Dim sA

GetSystemTime uSysTime

If CInt(uSysTime.wHour + 8) <24 Then

Select Case iFormat

Case 0

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyy-mm-dd") &_

" " &Format(CStr(uSysTime.wHour + 8), "00") &":" &Format(CStr(uSysTime.wMinute), "00") &":" &_

Format(CStr(uSysTime.wSecond), "00") &"." &CStr(uSysTime.wMilliseconds)

Case 1

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyymmdd") &_

Format(CStr(uSysTime.wHour + 8), "00") &Format(CStr(uSysTime.wMinute), "00") &_

Format(CStr(uSysTime.wSecond), "00") &CStr(uSysTime.wMilliseconds)

Case 2

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyy-mm-dd") &_

" " &Format(CStr(uSysTime.wHour + 8), "00") &":" &Format(CStr(uSysTime.wMinute), "00") &":" &_

Format(CStr(uSysTime.wSecond), "00")

End Select

Else

Select Case iFormat

Case 0

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyy-mm-dd") &_

" " &Format(CStr(uSysTime.wMinute), "00") &_

":" &Format(CStr(uSysTime.wSecond), "00") &"." &CStr(uSysTime.wMilliseconds)

Case 1

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyymmdd") &_

Format(CStr(uSysTime.wMinute), "00") &_

Format(CStr(uSysTime.wSecond), "00") &CStr(uSysTime.wMilliseconds)

Case 2

sA = Format(CStr(uSysTime.wYear) &"-" &CStr(uSysTime.wMonth) &"-" &CStr(uSysTime.wDay), "yyyy-mm-dd") &_

" " &Format(CStr(uSysTime.wMinute), "00") &_

":" &Format(CStr(uSysTime.wSecond), "00")

End Select

End If

Fun_GetLocalTime = sA

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11959145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存