加载项并排比较调整窗口宽度不能一次到位问题

加载项实现功能,自定义宽度并排比较窗口。工作需要,对比时,左侧窗口宽度要大于右侧窗口宽度。我设定的是,左侧窗口宽度为810,右侧630。(默认两个窗口宽度都是720)。目前存在的问题,

  1. 为什么第一次排列窗口必须是标题序号:2的窗口在左侧。

  1. 为什么经常性出现调整宽度不能一次到位的情况(窗口出现重叠)。需要取消并排比较,再次并排比较,才能达到预期效果(窗口吸附)。

function comparewindows()
{
let stra = wps.Application.ActiveWindow.Caption.toString();
let strb = wps.Application.ActiveWindow.Parent.Name.toString();
if (stra == strb){		//alert("只有一个窗口。")	
wps.Application.ActiveWorkbook.NewWindow();	}
w1 = wps.Application.Windows.Item(strb+":1");	  
w2 = wps.Application.Windows.Item(strb+":2");	 
w2.Activate();		 
Application.Windows.CompareSideBySideWith(w1.Caption);	 
wps.Application.Windows.SyncScrollingSideBySide = false;	 
w2.Zoom = 100;		
w2.Width=810;		
wps.Application.ActiveWorkbook.Worksheets.Item(1).Select();	
wps.Application.ActiveSheet.Range("B4").Select();	
wps.Application.ActiveWindow.ScrollRow = 4;	
wps.Application.ActiveWindow.ScrollColumn = 2;		 
w1.Activate();	 
w1.Width=627.75;		 
w1.Top=0;		 
w1.Left=810;	
//// wps.Windows.Item(2).Width == 460.5 并排比较 窗口 拖动为独立窗口后,宽度将不再是固定的460.5 	
//// item(2)永远是未激活状态,wps.Windows.Item(1).WindowState == -4137 wps.Windows.Item(2).WindowState == -4143	
wps.Application.Worksheets.Item(2).Activate();	
wps.Application.ActiveSheet.Range("J3").Select();	
wps.Application.ActiveWindow.ScrollRow = 3;	
wps.Application.ActiveWindow.ScrollColumn = 10;		
wps.PluginStorage.setItem("comparewindows", true); //设置 窗口并排比较key值	
activeTab();	 
wps.ribbonUI.Invalidate(); // 刷新Ribbon自定义按钮的状态	
// //alert("的函数  ," + w2.Caption +","+ w2.Name)	

return true;

}
黑龙江省
浏览 281
收藏
2
分享
2 +1
4
+1
全部评论 4
 
恰同学少年
又经过1个小时的研究。找到窗口的enableresize属性在最大化状态时值为null。通过逐语句调试发现,在windowstate=xlnormal后,由于调试时操作有延迟,窗口能按照window.left设定值移动。所以,将函数里调整窗口状态语句后,加上5ms延迟。就可以保证第一次并排比较自定义宽度窗口,移动到指定位置。
· 黑龙江省
回复
 
恰同学少年
又研究了一下。还是没找到原因,而且发现,在宏编辑器里调整窗口左边距,console.log打印window.left,输出的是调整后的值,但实际位置没变化。不得不用API。加载项代码如下,改装一下可在宏里运行。
· 黑龙江省
回复
 
恰同学少年
注释掉activeTab(); 注释掉wps.ribbonUI.Invalidate(); 删除wps.保留application 这个函数可以运行在宏编辑器里。 大家研究一下,这两个问题是怎么回事。
· 黑龙江省
回复
 
恰同学少年
是代码逻辑问题还是知识盲区的事?
· 黑龙江省
回复