設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

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

[Access本身] 分享一個自寫的界面分割調整控件,也求教個問題

[復制鏈接]

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

跳轉到指定樓層
1#
發(fā)表于 2015-3-26 15:04:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      今天跟大家分享一個在窗體上用于調整其他控件大小的SplitterBar的東西,這個東西有幾個要求:1、第一個要求就是鼠標移到其上時,可以改變鼠標指針的顯示;

2、拖動時,可以調整其他的控件的位置;
最終的效果如圖:


       我看了下很多其他的實例,一些實例直接使用的標簽,這樣的實例可以做到拖動時調整其他控件位置,可是第1條就難做到,鼠標在其上時,指針無變化。有些實例不能及時捕捉到鼠標移出事件(用SetCapture和ReleaseCapture之類的API函數),鼠標快速移出時就不靈光了,尤其是在拖到過程中,造成拖一下,然后就不動了。最后沒有辦法只有尋求通過MouseLeave事件來做。
       窗體的MouseLeave事件,在Access跟VB6中的窗體都沒有提供,必須自己使用API來添加,網上有個實例是VB6中的實現代碼(老外寫的)。我照著這個實例做了個搬到Access中,就是附件的樣子了。不過又碰到個莫名奇妙的問題,在這里也問問大家有沒有知道原因的,現象就是:
      當在Access中進入VBE環(huán)境后,再打開那個frmTest窗體的時候就沒效果了,還有可能讓你的Access完全死掉。但是如果不進入VBE的話,運行就沒有任何問題。我自己調試查了下,發(fā)現如果進入VBE環(huán)境一次之后,那個自定義的窗體過程捕獲的消息就不再能捕獲到MouseLeave事件了。這個現象真的好生的奇怪!
      附件如下:

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

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

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

2#
發(fā)表于 2015-3-26 15:06:09 | 只看該作者
好東東,謝謝分享,先坐個沙發(fā)!
3#
發(fā)表于 2015-3-26 15:41:32 | 只看該作者
站到終點站 謝謝分享

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

4#
發(fā)表于 2015-3-26 15:41:57 | 只看該作者
常規(guī)子類化,再打開vbe就有問題。
不過想要鼠標移到控件上改變指針形狀,不需要子類化的,用兩個api:SetCursor和LoadCursorA,在控件的鼠標移動和按下事件中改變指針形狀就可以了,鼠標移出時自己會還原
5#
發(fā)表于 2015-3-26 15:47:08 | 只看該作者
本帖最后由 roych 于 2015-3-26 15:51 編輯

測試了下,如果進入VBE了,則必須退出,打開,壓縮修復一次才可以恢復原來的效果。
不知道是不是跟VBA版本有關系。順便說句,本實例對Access 2003失效。
6#
發(fā)表于 2015-3-26 15:53:45 | 只看該作者
謝謝分享
回復

使用道具 舉報

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

7#
 樓主| 發(fā)表于 2015-3-26 15:55:52 | 只看該作者
roych 發(fā)表于 2015-3-26 15:47
測試了下,如果進入VBE了,則必須退出,打開,壓縮修復一次才可以恢復原來的效果。
不知道是不是跟VBA版 ...

可能是2003不支持主體的Paint事件造成的,將Set mSplitter = Me.Splitter0.Form放到Load事件里面應該就沒問題

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

8#
 樓主| 發(fā)表于 2015-3-26 16:27:10 | 只看該作者
本帖最后由 站到終點站 于 2015-3-26 16:30 編輯
t小寶 發(fā)表于 2015-3-26 15:41
常規(guī)子類化,再打開vbe就有問題。
不過想要鼠標移到控件上改變指針形狀,不需要子類化的,用兩個api:SetC ...

多謝小寶版主的提醒,我似乎明白了點什么。VB6里面直接子類化也會出現一些IDE的異;蛘弑罎,所以看到很多VB6自定義控件似乎寫了很多匯編代碼來解決這個問題。當初一直沒搞明白,出于什么目的,寫這么多代碼進行子類化處理。還以為只是單單為了解決自定義窗體過程代碼不能放在窗體代碼模塊,只能放在標準模塊中這個問題。我這里倒是有些VB6無崩潰SubClass的代碼,研究下看看能不能解決這個問題。

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

9#
 樓主| 發(fā)表于 2015-3-26 16:47:10 | 只看該作者
看了一篇博文http://blog.csdn.net/lyserver/article/details/5420762
搞的我突然有種沖動,使用完全自定義的窗體來做控件,Access中的窗體真是有點坑爹。{:soso_e101:}

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

10#
發(fā)表于 2015-3-26 21:58:43 | 只看該作者
開始進坑了,呵呵。。。
自定義窗體不是不可以,但上面放不了access的內置控件,這樣已經完全脫離access,不如直接用c語言了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

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

GMT+8, 2025-7-17 05:08 , Processed in 0.094815 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表