当用SSMOpenTopField功能调用一个图片时,如何动态的调整@Top显示的大小?

描述
@Top显示窗口在@1001.pdl图片中已经通过BPC(基本过程控制)预先组态。这些窗口可以显示不在工作区显示的任何图片,但是显示为动画窗口(参见图 1)。

当用SSMOpenTopField功能调用一个图片时,如何动态的调整@Top显示的大小? Fig. 1: Picture in the @Top display window ( 18 KB )

这些显示窗口用对象名@Top01...@Top24 命名,用SSMOpenTopField函数调用。其优点是当在工作区中修改一个图片时,窗口保持打开。 n

为了使@Top窗口中的图片大小自动适配@Top窗口的大小,必须在@Top图片中调用的图片中组态一个动作。比如,循环调用存储在Properties > Geometry > Picture width中的动作,
在那里,输入下列C动作:n

{
char *pWin, *pPic;

//Allocate Memory for the pointers
pWin = SysMalloc(sizeof(char)*255);
pPic = SysMalloc(sizeof(char)*255);

//copy the name of the ParentPicture and the
//@TopField-Window into the Pointers
strcpy(pPic,GetParentPicture(lpszPictureName));
strcpy(pWin,GetParentPictureWindow(lpszPictureName));

//Set the Height/Width of this Picture in dependency
//of the @TopField-Window
//(The Values are reduced by 12/30 because the
//borders need some space)
SetHeight(lpszPictureName,lpszObjectName,( GetHeight(pPic,pWin)-30));
return (GetWidth(pPic,pWin)-12);
}

  • 通过命令GetParentPicture()读出图片窗口从哪副图片中打开。n
  • 通过GetParentPictureWindow()确定图片在哪个@Top图片中打开。n
  • 对于GetHeight()函数需要该信息以读出@Top图片的高度。n
  • 类似地通过GetWidth()读出@Top图片的宽度。n
  • 使用SetHeight()SetWidth()将高度和宽度传送给当前图片。将有小部分的减少,因为@Top图片的边缘也占用空间,在示例中,高度为?0 像素,宽度为?2 像素。

下面的例子在PCS 7 V5.2 SP3 版本中创建,含有一个图片"Parent.pdl",从该图片在一个@Top图片中调用图片" Bildfenster.pdl"。在"Bildfenster.pdl"中,在 Properties > Geometry > Picture Width后面询问@Top图片的几何尺寸。此外,趋势窗口的几何尺寸也在Event > Property Topics > Picture width/Picture height后面调整。

当用SSMOpenTopField功能调用一个图片时,如何动态的调整@Top显示的大小? WinCC_PDL.exe ( 23 KB )

重要事项:
请注意,循环动作可以导致系统加载过度。循环动作的一种取代方法是,通过修改@Top窗口的高度和宽度来调整当前图片的大小。在 下面的示例脚本中给出一个可能的实现。该脚本可以动态化而不是在条目中所述的图片"Bildfenster.pdl"中的循环动作,比如,在 Properties > Other > Operator Release后面。

当用SSMOpenTopField功能调用一个图片时,如何动态的调整@Top显示的大小? Script.pdf ( 1 KB )

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc331129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论