設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 4770|回復(fù): 17
打印 上一主題 下一主題

[模塊/函數(shù)] 模塊與事件的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2013-3-9 18:50:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在學(xué)習(xí)事件模塊之間的關(guān)系和應(yīng)用。在學(xué)習(xí)中有些問題。
我寫了一段測試的代碼。
Private Sub Command0_Click()
Me.Command1.OnClick = "= ctlRed ('" & Me.Name & "',True)"
End Sub

模塊中寫了一段FUNCTION
Public Function ctlRed(strFormName As String, blRed As Boolean)
Dim ctl As Control
'Dim ctls As Controls
'Set ctls = CurrentProject.AllForms(strFormName).Controls
For Each ctl In Forms(strFormName)
    If ctl.ControlType = acCommandButton Then
        If blRed = True Then
        ctl.ForeColor = RGB(255, 0, 0)
        Else
        ctl.ForeColor = RGB(0, 255, 0)
        End If
    End If
Next ctl
End Function
但是測試了之后按鈕沒反應(yīng),但是如果寫在按鈕本身的事件中沒有問題。奇怪。
不知道哪里寫錯了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
 樓主| 發(fā)表于 2013-3-9 18:56:35 | 只看該作者
本帖最后由 williamwangc 于 2013-3-9 18:59 編輯

另外,我想問下。
1、我猜沒錯的話,Me.Command1.OnClick = "= ctlRed ('" & Me.Name & "',True)"這是表達式生成器是么?
2、如果我在按鈕的click事件寫入任意代碼,在運行以上的表達式的話會發(fā)生什么沖突么?
3、還有我在上一段代碼中使用'Set ctls = CurrentProject.AllForms(strFormName).Controls時發(fā)現(xiàn)有錯誤,這應(yīng)該怎么寫呢?
3#
發(fā)表于 2013-3-9 22:27:44 | 只看該作者
點多幾次就有反應(yīng)了。{:soso_e128:}
1、一般把這類型事件放在窗體的加載事件中效果會更好些。請參考【源碼開放】季度獎管理系統(tǒng)中主界面的圖標(biāo)菜單。如果需要調(diào)用的情況不多的話,寫好模塊后,直接在單擊事件中輸入:=函數(shù)(參數(shù))即可。
2、肯定會有沖突的。具體是哪個優(yōu)先,我沒測試過。
3、應(yīng)該怎樣寫:Set ctls = Forms(strFormName).Controls  AllForms木有Controls子集。
4#
 樓主| 發(fā)表于 2013-3-9 23:01:45 | 只看該作者
請版主再測試一下。
我是為設(shè)定權(quán)限的功能函數(shù)做準(zhǔn)備。在設(shè)定權(quán)限放在Load事件好還是Open事件好。是不是就是這樣引用表達式的思路初始化權(quán)限。?
5#
發(fā)表于 2013-3-10 09:53:06 | 只看該作者
williamwangc 發(fā)表于 2013-3-9 23:01
請版主再測試一下。
我是為設(shè)定權(quán)限的功能函數(shù)做準(zhǔn)備。在設(shè)定權(quán)限放在Load事件好還是Open事件好。是不是就 ...

你給的例子我測試過了。點第一次是沒反應(yīng),點擊第二次以后就有反應(yīng)了。^_^
從順序上來講,先是Load事件然后是Open事件。初始化嘛,自然是Load事件會好些的。
權(quán)限問題,我覺得最好還是在表中設(shè)置。Todaynew寫過《權(quán)限麻雀》和《菜單權(quán)限》等例子,你不妨搜索來參考下。
6#
 樓主| 發(fā)表于 2013-3-10 11:07:54 | 只看該作者
ACCESS的參考書中說OPEN事件優(yōu)先于LOAD事件嘛。
7#
發(fā)表于 2013-3-10 12:03:36 | 只看該作者
代碼有意思,樓主最好將例子上傳。
8#
發(fā)表于 2013-3-10 14:49:56 | 只看該作者
Me.Command1.OnClick = "= ctlRed ('" & Me.Name & "',True)"改成
Me.Command1.Click = "= ctlRed ('" & Me.Name & "',True)"行不行?
9#
發(fā)表于 2013-3-10 16:22:40 | 只看該作者
不應(yīng)該用AllForms,而應(yīng)該用Forms。
AllForms是所有窗體(包含打開和未打開的),F(xiàn)orms是所有打開的窗體。
要設(shè)置窗體上的控件,前提是窗體需要處于打開狀態(tài)。
10#
發(fā)表于 2013-3-11 09:54:24 | 只看該作者
本帖最后由 ycxchen 于 2013-3-11 09:56 編輯
roych 發(fā)表于 2013-3-9 22:27
點多幾次就有反應(yīng)了。
1、一般把這類型事件放在窗體的加載事件中效果會更好些。請參考【源碼 ...


請問版主,鍵入currentproject.后在列表框可看到AllForms對象,但無論鍵入AllForms.還是lForms.在出現(xiàn)的列表框均沒有controls子集,這是什么一回事呀?
按我理解,Me.Command1.OnClick = "= ctlRed ('" & Me.Name & "',True)"應(yīng)改成如下的才對,對否?
Me.Command1.Click = "= ctlRed ('" & Me.Name & "',True)"
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:30 , Processed in 0.087115 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表