PB11能将PB做的C/S程序直接转换成.net2 的B/S应用,即WebForm。应用中发现一些问题,所以需要修改系统带的JS文件以及增加自己的JS处理。 --- 现象 如果窗口上的按钮文字是中文,特别是使用的小字体、按钮高度不足够高时就会出现汉字的顶边被削掉2-3个点的情况,下图是示意: 看起来汉字显示不全,严重影响美观!有意思的是build 6501以前的版本未出现此问题。 所以,本人增加了一个函数,在页面初始化后客户端调用如下函数即可解决: function My_AlterButton ( ){ var allButtons = document.getElementsByTagName("button"); for (var i=0; i<allButtons.length; i++) { oButton = allButtons[i]; if(oButton.getAttribute("pbtype") =="button") { oDiv = document.getElementById(oButton.id + "_div"); //图片按钮无ID if(oDiv) { var wc = document.getElementById(oButton.id + "_div").getElementsByTagName("td")[0]; wc.style.lineHeight="150%"; //这是影响因素,原始生成的是: line-height:100% } } }} 这是依据PB11生成B/S页面后,按钮在HTML文档中具有如下结构形式编写的: .....<button pbtype="button" id="xxxx" ....> <div id="xxxx_div" .....> <table 无ID 无name .....> <tr> <td ....>按钮文字</td> </tr> </table> </div></button> ....... 那么这个函数怎么用? 放到哪里去呢? 调试中发现,每个C/S窗口生成的B/S页面显示时,都要调用 PBWindows.js 中的PBWindowManager_Init1 函数,所以,我们可以将它放到这里: //原来的 function PBWindowManager_Init1(strID, strDefaultBtnID, strCancelBtnID){ var oNewWindow = this.Get(strID); if (strCancelBtnID != "") { oNewWindow.strCancelBtn = document.getElementById(strCancelBtnID); } if (strDefaultBtnID != "") { oNewWindow.strDefaultBtn = document.getElementById(strDefaultBtnID); }} //加了扩充函数的 function PBWindowManager_Init1(strID, strDefaultBtnID, strCancelBtnID){ var oNewWindow = this.Get(strID); My_AlterButton(); if (strCancelBtnID != "") { oNewWindow.strCancelBtn = document.getElementById(strCancelBtnID); } if (strDefaultBtnID != "") { oNewWindow.strDefaultBtn = document.getElementById(strDefaultBtnID); }} 这样扩充后的效果见下图: 是不是很正常了!!?