解決EmbeddedWB彈出頁面錯誤框的問題

2022-02-19 05:29:17 字數 868 閱讀 8921

使用embeddedwb控制項的時候,發現有一些錯誤完全無法用try..except去接,這些錯誤的提示並非是通過raize丟擲的,而是通過windows訊息傳遞而來,因此要解決此問題,必須從訊息下手。

在embeddedwb.pas中,找到重寫訊息的方法,即tembeddedwb.formwndproc(),其中的**即是訊息的接收,而看其他碼,它正是處理了wm_activate訊息,即有對話方塊彈出時觸發的訊息。

即然出錯資訊也是對話方塊,那麼從此訊息跟入就不會有錯,繼續往下讀**,發現有一句

setwindowtext(wnd, pchar(s));

直覺告訴我應該在此處下個斷點,下了之後除錯,果然發現了,這裡的變數s就是出錯對話方塊的標題!

那麼引數中的wnd也就是對話方塊的控制代碼了。沒想到這麼簡單就直接找到了關鍵之處

隨後要做的,就是把這個對話方塊關掉了,在對話方塊顯示後,立刻關閉之,這時的一閃而過是使用者肉眼無法捕捉的,也不會造成介面閃爍。

於是在 if fdisableerrors.fscripterr then 下新增一段**

tryhbutton := findwindowex(wnd, 0, 'button', '&no');

sendmessage(hbutton, bm_click, 0,0);

except on e: exception do

end;

這樣就直接傳送了no這個button被點選的訊息,對話方塊就自己關掉了

如果是中文版的windows,只需要把 "&no" 改成 "否(&n)" 即可

如果覺得這麼做不放心,要啟動出錯報告怎麼辦呢?辦法也很簡單

在embeddedwb控制項裡,有乙個屬性的設定,將disableerrors.scripterror改成false就好了

重複彈出Toast 解決方案

在開發中,有可能提示會很快,android系統的toast的提示是佇列的形式,如果操作很快,同時有大量的訊息傳遞,會導致出現在操作結束之後好久才會彈出toast顯示你的訊息,在這裡,我採用了單例模式封裝了乙個toast,再 中直接使用就可以解決掉這個問題了 public class mytoast ...

啟動頁白屏解決方案

由於activity只能到onresume時,才能展示到前台,所以,如果為main activity設定背景的話,無論oncreate onresume速度多快,都會出現短暫的白屏或者黑屏 視的background屬性 其實解決的辦法很簡單,只需將你的splashactivity中的view的bac...

div彈出視窗在frameset外層解決方案

首頁通過framset經行網頁布局,現在有個臨時的訊息視窗,ajax返回會彈出來。但是這個就有問題了。div作為網頁元素,是依賴與frame的。怎麼讓其在整個檢視視窗的最上層呢?frmae 連線網頁,會對超過的部分進行遮擋。這裡提供了一種解決方案.先記錄下來。sorry your browser d...