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);
}
}
这样扩充后的效果见下图:
是不是很正常了!!?