⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fcrep.js

📁 一个完整的
💻 JS
📖 第 1 页 / 共 5 页
字号:
//2002.06.19 北京方成公司 梅勇

//写隐藏div用于装表数据的备份
document.write('<div id=tCopy style="DISPLAY: none; "></div>')
//装入报表提示等待
document.write('<div id=ShowWait  style="BACKGROUND-COLOR: antiquewhite;  COLOR: red; DISPLAY: none; FONT-SIZE: x-large; FONT-STYLE: normal; FONT-WEIGHT: bold; HEIGHT: 600px; LEFT:0px; position:absolute; TOP: 0px; WIDTH: 800px; Z-INDEX: 100">&nbsp;&nbsp;正在装入,请稍候...</div>')
//装入用于开发的一排报表
LoadButton()

document.write('<TEXTAREA id=txt1 rows=3 style="DISPLAY: none; HEIGHT: 52px; LEFT: 132px; POSITION: absolute; TOP: 345px; WIDTH: 302px"></TEXTAREA>')

var curKeyCode	//用于webgrid中直接按键输入时运行timer时传递当前输入字符及原串

var fc_wherexml="" //当前的XML条件串
var fc_curpage=1 //当前页号
var fc_allpages=1 //总页数
//用于处理查询字段的输入和输出参数
var sActFieldIn=""
var sActFieldOut=""

var blnMouseDown=false	//在表格上mousedown时此变量为真
//用于当移到边界外时捕获鼠标,自动滚动.
var blnCapture=false
var iTimeID=0
var iTimeID1=0
var iTimeID2=0
var iTimeID3=0
var tdEndSel //
//---------------------
//选择时,记录起止单元的坐标
var	sTop,sLeft,sWidth,sHeight,eTop,eLeft,eWidth,eHeight
//记录选择时的起止单元格的物理位置
var sRow,sCol,eRow,eCol	
//排好序后的位置
var sRowSort,sColSort,eRowSort,eColSort
//处于运行模式
var blnRunMode=false
//决定报表是否变化了
var blnChange=false
//不要运行表格的mouseup,thead_onclick时只运行在mousedown
var NoRunMouseUp=false
//当显示全部时要自动加行,将行数存此全局变量中
var AutoAddLines=0
//---------------------

var	lngUndo=-1
var	lngRedo=-1
var oUndo
oUndo=new ActiveXObject("Microsoft.XMLDOM")
oUndo.async ="false";
oUndo.loadXML("<root></root>")
var oRedo
oRedo=new ActiveXObject("Microsoft.XMLDOM")
oRedo.async ="false";
oRedo.loadXML("<root></root>")
//---------------------


var oFormula
oFormula=new ActiveXObject("Microsoft.XMLDOM")
oFormula.async ="false";
oFormula.loadXML("<root></root>")

var oGraph
oGraph=new ActiveXObject("Microsoft.XMLDOM")
oGraph.async ="false";
oGraph.loadXML("<root></root>")


//用于检查公式嵌套时ExpandFormula函数,传一个成功与失败的参数
var bCheckFormula=false
//保存公式嵌套错误信息的数组
var arrCheckFormula=new Array()

function ErrorFormula(sGetcell,sFormula,RC){	
	this.sGetcell=sGetcell	//"GETCELL(2,3)"
	this.sFormula=sFormula	//"B2+B3"
	this.RC=RC	//"C3"
}

function t_onmousedown() {
	//show("t_onmousedown")
	var obj=event.srcElement 
	if (event.button ==2)
		return;

	if(obj.tagName=="TD"){
		//alert(grid.ReadOnly)
		//如果只读
		var s1=obj.getAttribute("pressenter")
		if(grid.ReadOnly && s1==null){
			 return
		}
		
		//-------
		if(t.rows(0).style.cursor=="default" && t.childNodes(0).childNodes(0).style.cursor=="default"){
			if(thead_onclick()){
				
				return
			}
		}
			
	}
	if(obj.id!="txtMyGrid"){
		if (obj.tagName!="TD" || obj.parentNode.rowIndex==0 || obj.cellIndex==0)
			return
	}
	//固定行上不能选择
	//if (blnFixRowDrap && obj.parentNode.rowIndex<lngFixRows) return
	//if (bShowMenu)
		showFontProperty(obj)
		blnMouseDown=true
	//if (t.rows(0).style.cursor =="move" || t.childNodes(0).childNodes(0).style.cursor =="move"){
	
	//}
	//else {
		if (blnCapture==false) {
			//show("Capture")
			blnCapture=true
			t.setCapture()
		}
	//}
		sLeft=obj.offsetLeft //初始位置
		sTop=obj.offsetTop 
		sWidth=obj.offsetWidth 
		sHeight=obj.offsetHeight 				
		if(t.style.borderLeftStyle=="none")
			sLeft++
		if(t.style.borderTopStyle=="none")
			sTop++
			
		eLeft=sLeft 
		eTop=sTop 
		eWidth=sWidth 
		eHeight=sHeight 			
		var i
//下面两个循环计算起始行列值
		var tmp=1
		for (i=0;i<=t.rows(0).cells.length-1;i++)
		{
			if(t.childNodes(0).childNodes(i).style.pixelWidth>0) 
				tmp=tmp+t.childNodes(0).childNodes(i).style.pixelWidth
			if (tmp==sLeft)
			{
				sCol=i+1
				while (t.childNodes(0).childNodes(sCol).style.pixelWidth==0) {
					sCol=sCol+1
					if (sCol==t.rows(0).cells.length-1)
						break;
				}
				break;
			}
			
		}					
		tmp=1
		for (i=0;i<t.rows.length;i++)
		{
			if (t.rows(i).style.display!="none") 
				tmp=tmp+t.rows(i).style.pixelHeight
			if (tmp==sTop)
			{			
				sRow=i+1
				while (t.rows(sRow).style.display=="none") {
					sRow=sRow+1
					if (sRow==t.rows.length-1)
						break;
				}
				break;
			}
			
		}		
		//当选中一个合并单元时
		var arr=PhyToLog(sRow,sCol)
		var iRowSpan=t.rows(arr[0]).cells(arr[1]).rowSpan
		var iColSpan=t.rows(arr[0]).cells(arr[1]).colSpan
		eRow=sRow+iRowSpan-1
		eCol=sCol+iColSpan-1
		sRowSort=sRow
		sColSort=sCol
		eRowSort=eRow
		eColSort=eCol
		
		showBlueRect()
		showBlueScale(sRow,sCol,sRow,sCol)
	//先运行控件外的onmousedown
	var curObjTmp=event.srcElement
	if(curObjTmp.tagName!="TD") return
	if (curObjTmp.parentNode.rowIndex>0 && curObjTmp.cellIndex>0) {
		//if(typeof curObj=="undefined") curObj=curObjTmp
		try {
			grid.actcellchange(curObjTmp)
		}
		catch (e){}
		//curObj=curObjTmp
		//mcurRow=curObj.parentNode.rowIndex
		//mcurCol=curObj.cellIndex
		grid.moveedit(curObjTmp)
	}

}

function t_onmousemove() {
		
	if (event.button ==2)
		return;
	if (blnMouseDown && grid.autosize==false) {
		if  (event.y>grid.top+grid.height-17) {
			if (iTimeID==0) {
				iTimeID=window.setInterval("grid.Scroll(2)",200)
			}
		}
		else
		{
			if (iTimeID!=0) {
				window.clearInterval(iTimeID)
			}
			iTimeID=0
		}

		if  (event.y<grid.top) {
			if (iTimeID1==0) {
				iTimeID1=window.setInterval("grid.Scroll(1)",200)
			}
		}
		else
		{
			if (iTimeID1!=0) {
				window.clearInterval(iTimeID1)
			}
			iTimeID1=0
		}

		if  (event.x<=grid.left+35) {//35左边列宽
			if (iTimeID2==0) {
				iTimeID2=window.setInterval("grid.Scroll(3)",200)
			}
		}
		else
		{
			if (iTimeID2!=0) {
				window.clearInterval(iTimeID2)
			}
			iTimeID2=0
		}
		if  (event.x>=grid.left+grid.width-17) {//17右边滚动条宽
			if (iTimeID3==0) {
				iTimeID3=window.setInterval("grid.Scroll(4)",200)
			}
		}
		else
		{
			if (iTimeID3!=0) {
				window.clearInterval(iTimeID3)
			}
			iTimeID3=0
		}

	}

	t.style.cursor="default"
	
	var obj=event.srcElement 

	if (obj.tagName!="TD" || obj.parentNode.rowIndex==0 || obj.cellIndex==0)
		return
	if ( blnMouseDown==true){
		
		document.selection.clear()
		eLeft=obj.offsetLeft 
		eTop=obj.offsetTop 
		eWidth=obj.offsetWidth 
		eHeight=obj.offsetHeight 
		//show("sLeft="+sLeft+" sTop="+sTop+" sWidth="+sWidth+" sHeight="+sHeight
		//+" eLeft="+eLeft+" eTop="+eTop+" eWidth="+eWidth+" eHeight="+eHeight)
		tdEndSel=obj
		showBlueRect()
	}
}
function t_onmouseup() {	
	if(NoRunMouseUp) {
		NoRunMouseUp=false
		return
	}
	var bTmp=false
	blnMouseDown=false
	if (blnCapture) {
		if (iTimeID!=0) {
			window.clearInterval(iTimeID)
			bTmp=true
		}
		iTimeID=0
		if (iTimeID1!=0) {
			window.clearInterval(iTimeID1)
			bTmp=true
		}
		iTimeID1=0
		if (iTimeID2!=0) {
			window.clearInterval(iTimeID2)
			bTmp=true
		}
		iTimeID2=0
		if (iTimeID3!=0) {
			window.clearInterval(iTimeID3)
			bTmp=true
		}
		iTimeID3=0

		blnCapture=false
		t.releaseCapture()

	}

	var obj,iRow,iCol
	var bTmp=false

	if (event.button ==2)
		return;
	//当光标移到表外时,取mousemove保留的结尾选择单元格(tdEndSel)
	if (event.y>grid.top+t.offsetHeight || event.y<grid.top || event.x<=grid.left+35 || event.x>=grid.left+t.offsetWidth ) 
		obj=tdEndSel
	else
		obj=event.srcElement 

	try{
		var sTest=obj.tagName
	}
	catch (e){
		obj=t.rows(0).cells(0)
	}
	if(obj.tagName=="TD"){
		//如果只读
		var s1=obj.getAttribute("pressenter")
		if(grid.ReadOnly && s1==null){
			 return
		}
	}
	try {
		if (obj.tagName!="TD"  || obj.cellIndex==0 || obj.parentNode.rowIndex==0 )
			return
	}
	catch (e){return}	
		
	
	eLeft=obj.offsetLeft 
	eTop=obj.offsetTop 
	eWidth=obj.offsetWidth 
	eHeight=obj.offsetHeight



//计算列宽行高,用于计算起止点的物理位置.
	var i,j
	var tmp=1
	for (i=0;i<=t.rows(0).cells.length-1;i++)
	{
		if(t.childNodes(0).childNodes(i).style.pixelWidth>0) { 
			tmp=tmp+t.childNodes(0).childNodes(i).style.pixelWidth
		}	
		if (tmp==eLeft+eWidth)
		{
			eCol=i
			break;
		}
	}		
	
	tmp=1
	for (i=0;i<t.rows.length;i++)
	{
		if (t.rows(i).style.display!="none")
			tmp=tmp+t.rows(i).style.pixelHeight
		if (tmp==eTop+eHeight)
		{
			eRow=i
			break;
		}	
	}
			
	//show(sCol+" "+sRow+"  "+eCol+"  "+eRow)
	if(sRow>eRow){
		sRowSort=eRow
		eRowSort=sRow
	}
	else {
		sRowSort=sRow
		eRowSort=eRow
	}
	if(sCol>eCol){
		sColSort=eCol
		eColSort=sCol
	}
	else {
		sColSort=sCol
		eColSort=eCol
	}

	showBlueRect()
	showBlueScale(sRow,sCol,eRow,eCol)
        if(blnRunMode==false){
		if (cmdBrush.getAttribute("fcDown")=="1") {
			cmdPasteFormat()
			cmdBrush.setAttribute("fcDown","0")
			cmdBrush.className="tblclassup"
			clearBlueScale()
		}
        }
}

function thead_onclick() {
//表头点击处理	
	
	if (event.srcElement.tagName!="TD") return false
	var curColNo=event.srcElement.cellIndex
	var curRowNo=event.srcElement.parentNode.rowIndex
	if(curColNo==0 && curRowNo==0) {
		//点左上角
		selectRange(1,1,t.rows.length-1,t.rows(0).cells.length-1)
		NoRunMouseUp=true
	}
	else if(curRowNo==0) {
		//点第一列
		selectRange(1,curColNo,t.rows.length-1,curColNo)
		NoRunMouseUp=true
	}
	else if(curColNo==0){
		//点第一行
		selectRange(curRowNo,1,curRowNo,t.rows(0).cells.length-1)
		NoRunMouseUp=true
	}
	return 	NoRunMouseUp

}


//*****************************************************************************************
//显示兰框的三函数
//*****************************************************************************************
function clearBlueScale(){
//清除兰色的选中框	
	tc.style.display ="none"
	for(var i=0;i<t.rows.length;i++)
		t.rows(i).cells(0).style.color="black"
	for(var j=0;j<t.rows(0).cells.length;j++)	
		t.rows(0).cells(j).style.color="black"	
		hideTxt()
}
function hideTxt(){
//隐藏输入文本框
	txtMyGrid.style.display="none"

}
function showBlueScale(r0,c0,r1,c1){
	if(grid.ReadOnly) return
//显示兰色的选中框
	var row0,col0,row1,col1 //物理位置
	//排序
	if (r1>r0){
		row0=r0
		row1=r1
	}
	else {
		row0=r1
		row1=r0
	}
	if (c1>c0){
		col0=c0
		col1=c1
	}
	else {
		col0=c1
		col1=c0
	}
		
	for (var i=0;i<t.rows.length;i++){
		if(i>=row0 && i<=row1 )
			t.rows(i).cells(0).style.color="blue"
		else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -