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

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

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

[窗體] 窗體與WebBrowse交互(從todaynew學(xué)來的)

[復(fù)制鏈接]

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

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2012-8-27 10:57:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
先看代碼:
  1. Option Compare Database
  2. Option Explicit

  3. Private Sub Command1_Click()
  4.     WebBrowser0.Document.parentWindow.test "called from Access Form"
  5. End Sub

  6. Private Sub Form_Load()
  7.     WebBrowser0.Navigate "about:blank"
  8.     DoEvents

  9.     Do While WebBrowser0.Busy
  10.         DoEvents
  11.     Loop

  12.     WebBrowser0.Document.Write _
  13.         "<html><head><script>" & vbCr & _
  14.         "var accForm; " & vbCr & _
  15.         "function test(message) { alert(message); }" & vbCr & _
  16.         "</script></head><body><button " & vbCr & _
  17.         "onclick=""accForm.test('called from script code')"">" & vbCr & _
  18.         "call client code from script code</button>" & vbCr & _
  19.         "</body></html>"
  20.     Set WebBrowser0.Document.parentWindow.accForm = Me
  21. End Sub

  22. Public Sub test(ByVal message As String)
  23.     MsgBox message
  24. End Sub
復(fù)制代碼
新建一個(gè)窗體,在窗體上放一個(gè)Microsoft Web控件和一個(gè)命令按鈕,分別命名為 WebBrowse0 和 Command1,在窗體的 VBA 模塊中輸入上述代碼。運(yùn)行窗體,得到如下效果:
當(dāng)點(diǎn)擊 Command1 時(shí):

當(dāng)點(diǎn)擊WebBrowse控件中的按鈕時(shí):


意思是點(diǎn)擊Access的按鈕執(zhí)行頁面的javascript函數(shù),而點(diǎn)擊頁面中的按鈕則執(zhí)行Access窗體中的方法。

更好的示例:  (2012-08-28 添加)
Todaynew:WebBrowser控件與數(shù)據(jù)庫交互示例

本帖子中包含更多資源

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

x

評分

參與人數(shù) 2經(jīng)驗(yàn) +16 收起 理由
zpy2 + 15 (V幣)優(yōu)秀提問、答復(fù)(1-2分)
風(fēng)中漫步 + 1 看著不錯(cuò)

查看全部評分

本帖被以下淘專輯推薦:

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

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

2#
 樓主| 發(fā)表于 2012-8-27 10:59:32 | 只看該作者
很有意思,我們可以通過 WebBrowse.Document.parentWindow這個(gè)對象來實(shí)現(xiàn)交互。

有了這個(gè),再實(shí)現(xiàn) 歌逸新平臺:MS Access 和 JQuery 打造最炫界面
http://ctxi.cn/forum.p ... 088&fromuid=625



就應(yīng)該不是很困難了。

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

3#
發(fā)表于 2012-8-27 11:28:36 | 只看該作者
Access的Web化浪潮來了...
4#
發(fā)表于 2012-8-27 11:39:20 | 只看該作者
不錯(cuò),不用說從誰那里學(xué)來的,代碼我看得很熟悉,天下文章都是抄來的,哈哈。。。

對于帶超鏈接的還有一個(gè)更簡單的,就是捕捉URL
5#
發(fā)表于 2012-8-27 12:03:26 | 只看該作者
WebBrowser0.Document.Write 似乎可以遍歷數(shù)據(jù)庫做出各種各樣的數(shù)據(jù)呈現(xiàn)形式。

另外,提供的關(guān)于WebBrowser0方面資料的鏈接地址上的文字不是我寫的,我只是找來學(xué)習(xí)了一下,呵呵。

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

6#
發(fā)表于 2012-8-27 12:09:29 | 只看該作者
很強(qiáng),我也弄了半天,也大同小異。
看來gnoy勾起了大伙們的興趣。
7#
發(fā)表于 2012-8-27 13:10:45 | 只看該作者
但在access里面用WebBrowse,有時(shí)候會很靈異.曾經(jīng)試過用wb(WebBrowse)去navitegate本地的一個(gè)swf文件,失敗.同樣的代碼,同樣是調(diào)用wb控件,在vb,excel的userform里面做卻可以加載成功.把userform導(dǎo)出frm在access導(dǎo)入,還是失敗.不知道是什么原因?qū)е率?可能是跟Acess的運(yùn)行環(huán)境有關(guān),因?yàn)橛械碾娔X是加載成功的
所以至今Access里面用這個(gè)控件,還是有點(diǎn)怕怕的.不知道會有什么不可預(yù)料的事情發(fā)生.
8#
發(fā)表于 2012-8-27 14:20:20 | 只看該作者
有個(gè)奇怪的問題想問一下:
dim txt as string
txt="將html代碼逐段的寫給這個(gè)變量"
WebBrowser0.Document.Write  txt
到此為止,WebBrowser0可以顯示出寫入的html代碼。

但是,下面的語句就會報(bào)錯(cuò):
Set WebBrowser0.Document.parentWindow.accForm = Me
這是什么原因?

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

9#
 樓主| 發(fā)表于 2012-8-27 15:36:59 | 只看該作者
todaynew 發(fā)表于 2012-8-27 14:20
有個(gè)奇怪的問題想問一下:
dim txt as string
txt="將html代碼逐段的寫給這個(gè)變量"
WebBrowser0.Document.Write  txt
到此為止,WebBrowser0可以顯示出寫入的html代碼。

但是,下面的語句就會報(bào)錯(cuò):
Set WebBrowser0.Document.parentWindow.accForm = Me
這是什么原因?


accForm 是網(wǎng)頁中的一個(gè)對象變量

應(yīng)該這樣寫
  1. dim txt as string
  2. txt="<script>var accForm;</script>" & _
  3.     "將html代碼逐段的寫給這個(gè)變量"
  4. WebBrowser0.Document.Write  txt

  5. ' 這樣就不會報(bào)錯(cuò)了:
  6. Set WebBrowser0.Document.parentWindow.accForm = Me
復(fù)制代碼
目的,是把當(dāng)前窗體對象傳遞到網(wǎng)頁。
10#
發(fā)表于 2012-8-27 15:41:26 | 只看該作者
沒報(bào)錯(cuò)啊

Private Sub Form_Load()
   Dim str As String
   
    str = "<html><head><script>" & vbCr & _
        "var accForm; " & vbCr & _
        "function test(message) { alert(message); }" & vbCr & _
        "</script></head><body><button " & vbCr & _
        "onclick=""accForm.test('called from script code')"">" & vbCr & _
        "call client code from script code</button>" & vbCr & _
        "</body></html>"
   
    WebBrowser0.Navigate "about:blank"
    DoEvents

    Do While WebBrowser0.Busy
        DoEvents
    Loop

    WebBrowser0.Document.Write str
        
Set WebBrowser0.Document.parentWindow.accForm = Me
End Sub
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

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

GMT+8, 2024-10-23 10:28 , Processed in 0.117286 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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