Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

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

[Access本身] 【新手進(jìn)階】之十五:你可能遇到了一個(gè)假的標(biāo)簽效果

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2017-2-10 16:29:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
       似乎很久沒(méi)寫新手進(jìn)階系列了,大家有沒(méi)有很想我了?——想我的回個(gè)帖唄,讓我數(shù)數(shù)有多少人。

      先說(shuō)個(gè)老笑話。據(jù)說(shuō)有一年,直板手機(jī)跟卡片相機(jī)打架,相機(jī)打不過(guò),就回頭找了單反過(guò)來(lái),然后在路上遇到了一部拍照相機(jī),暴揍一頓,然后翻過(guò)來(lái)準(zhǔn)備狂扁攝像頭,攝像頭說(shuō),大哥,別打,別打!我是臥底啊。結(jié)果揍得更厲害了,還臥底?剛才就是你看到我們了,才跑那么快……你特么的肯定是被收買了。

      加了攝像頭的手機(jī),自然還是手機(jī)。然而,對(duì)于Access來(lái)說(shuō),加了控件的主體還是主體嗎?——這個(gè)問(wèn)題我先不回答,我們先來(lái)看看一個(gè)例子:

      版友ha0148希望在標(biāo)簽上加上一個(gè)鼠標(biāo)移動(dòng)的效果。大約就是鼠標(biāo)移動(dòng)到標(biāo)簽后,標(biāo)簽邊框凸起,代碼如下:
  1. Function ae(ctrl As Label)
  2.     ctrl.SpecialEffect = 1
  3.     ctrl.ForeColor = vbBlue
  4. End Function
復(fù)制代碼
     在標(biāo)簽的mousemove事件中調(diào)用,當(dāng)然是沒(méi)問(wèn)題的。問(wèn)題在于鼠標(biāo)移開之后呢?不好意思,Access里似乎沒(méi)有mousemoveout的事件。
      從理論上講,既然沒(méi)有moveout事件,自然就是move完之后,該怎么樣就怎么樣了。也就是說(shuō),鼠標(biāo)移動(dòng)完之后,一直凸起,凸起……直到下次打開之前都是特么的凸起!(dāng)然,聰明的他在窗體的主體上加了一個(gè)mousemove事件,所以移到主體上,自然恢復(fù)原狀了。
     
      然而,這一切在于加了個(gè)Box之后,徹底被改變了。是的,加了一個(gè)方框之后,系統(tǒng)會(huì)認(rèn)為你是移動(dòng)到方框上,而不是移動(dòng)到主體上。于是結(jié)果成了這樣:

      而他希望的效果應(yīng)該是這樣:

      我們知道,和網(wǎng)頁(yè)不一樣的是,Access沒(méi)有事件冒泡的玩法。也就是說(shuō),不能因?yàn)槟泓c(diǎn)擊了主體上的一個(gè)控件一層層遞進(jìn)而捕捉到主體的點(diǎn)擊事件。如果要觸發(fā)主體的點(diǎn)擊事件,你必須在主體的空白處點(diǎn)擊,而不是主體的控件上。
      
      這樣一樣,問(wèn)題就很清晰了,只要把主體的movemove事件復(fù)制或者移植到box上就算是解決了。不過(guò),寫到這里,估計(jì)很多人意猶未盡吧?

      好,接下來(lái),我們用另一個(gè)方案來(lái)解決它。那就是重新改寫label的movemove事件。
      前面說(shuō)過(guò),Access沒(méi)有mousemoveout的事件。那么,我們就應(yīng)該想辦法在mousemove時(shí)把其他標(biāo)簽的效果恢復(fù)過(guò)來(lái)了,而不是等到moveout的時(shí)候再解決。因此,代碼可以這樣寫:
  1. Function label_Moveout(lbl As Label)
  2.     Dim ctr As Control
  3.     For Each ctr In Me.Controls
  4.         If ctr.ControlType = acLabel Then
  5.             If ctr.Name = lbl.Name Then
  6.                 ctr.SpecialEffect = 1
  7.                 ctr.ForeColor = vbBlue
  8.             Else
  9.                 ctr.SpecialEffect = 0
  10.                 ctr.ForeColor = vbBlue
  11.             End If
  12.         End If
  13.     Next
  14. End Function
復(fù)制代碼
     這里就不解釋代碼了,大體的意思是說(shuō),如果不是當(dāng)前的標(biāo)簽,就將它的效果恢復(fù)為原狀。如果是,則修改為凸起狀態(tài)!绻匀徊欢闊┤タ纯葱率诌M(jìn)階系列,前面有for的語(yǔ)法講解。
      最后奉上附件2份,大家對(duì)比下。鄭重聲明:文件AA可能是遇到的假的標(biāo)簽效果。

---------------------------------------------
ha0148說(shuō),
您好!我試了一上,將方框背景設(shè)置為透明,或者在方框背景為透明將標(biāo)簽設(shè)置為黃色,都能快速?gòu)?fù)原。請(qǐng)問(wèn)這個(gè)問(wèn)題有什么辦法解決嗎?望能給予回復(fù),謝謝!

---------------------------------------------
我想,你可能還沒(méi)理解我前面所說(shuō)的,mousemove之后,標(biāo)簽其實(shí)已經(jīng)凸起了,這一點(diǎn)是毋庸置疑的。
現(xiàn)在的問(wèn)題是,改方框的背景屬性為什么可以解決呢?答案是:
改方框的背景屬性,從視覺(jué)效果上隱藏了凸起的效果。否則,為什么是透明或者白色呢?
——因?yàn)榘咨黧w的背景色是一致的,至于透明就更加不用說(shuō)了。
——如果不信的話,你可以將方框改為白色的背景色,主體改為黃色的背景色。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖1 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
發(fā)表于 2017-2-10 16:30:10 | 只看該作者
贊一個(gè),先頂個(gè)沙發(fā)!

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2017-2-10 16:38:26 | 只看該作者
贊一個(gè),先頂個(gè)板凳!

點(diǎn)擊這里給我發(fā)消息

4#
發(fā)表于 2017-2-10 18:30:58 | 只看該作者
謝謝!roych老師,這個(gè)問(wèn)題在困繞著了,我將您的代碼復(fù)制下來(lái)好好研究一番,謝謝您。衷心感謝!
5#
發(fā)表于 2017-2-10 18:49:42 | 只看該作者
roych老師的大作,我是要學(xué)習(xí)的!謝謝!

點(diǎn)擊這里給我發(fā)消息

6#
發(fā)表于 2017-2-10 19:13:05 | 只看該作者
看來(lái)學(xué)習(xí)ACCESS 不是一朝一夕之事。這兒是一個(gè)好地方。有老師肯出手相助,謝謝老師們。。。
7#
發(fā)表于 2017-2-11 06:43:58 | 只看該作者
連續(xù)想念中,祝老師元宵節(jié)快樂(lè)!

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
8#
發(fā)表于 2017-2-12 14:40:58 | 只看該作者
自帶沙發(fā)捧場(chǎng)
9#
發(fā)表于 2017-2-13 14:25:44 | 只看該作者
這個(gè)是學(xué)習(xí)做主控界面的基礎(chǔ)。
roych教程都很不錯(cuò)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 02:29 , Processed in 0.161506 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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