闲来无事,参考教程以C脚本为核心做了一些有关弹窗的东西,分享部分代码如下:
------
触发弹窗的代码,可放在按钮或者流程图设备上的鼠标点击事件下。
需要了解的概念:窗口画面、变量前缀、C脚本、结构变量
------
/*
功能说明
判断画面窗口1的变量前缀和计划给的变量前缀是否相等,
若相等,正常的隐藏、显示画面窗口。
若不相等,隐藏窗口画面,重新设置窗口画面的X、Y坐标。给如新的变量前缀,显示窗口画面。
*/
BOOL IsVisible; //画面窗口是否可见的中间变量
BOOL IsEqual; //变量前缀是否相等的中间变量
char* GValue; //获取到的窗口画面变量前缀
char* SValue; //计划设定的画面前缀
SValue = ("XV1001"); //本地化应用以后每次只需要修改这里""内的值
GValue =GetTagPrefix("020 窗口画面.PDL","画面窗口1"); //这个根据本地画面组态的情况注意一一对应,以下不再重复提醒
IsEqual =strcmp(SValue,GValue); //strcmp比较返回BOOL 0说明相等
IsVisible =GetPropBOOL(lpszPictureName,"画面窗口1","Visible");
if (IsEqual==0)
{
if(IsVisible)
{
SetPropBOOL(lpszPictureName,"画面窗口1","Visible",FALSE);
}
else
{
//窗口X坐标
SetPropWord(lpszPictureName,"画面窗口1","Left",GetPropWord(lpszPictureName,lpszObjectName,"Left")-100);
//窗口Y坐标
SetPropWord(lpszPictureName,"画面窗口1","TOP",GetPropWord(lpszPictureName,lpszObjectName,"TOP")-350);
//改变量前缀
SetTagPrefix(lpszPictureName,"画面窗口1",SValue);
//刷新缓存,必须有这句不然不起作用
SetPictureName(lpszPictureName,"画面窗口1","Model_Valva.Pdl");
SetPropBOOL(lpszPictureName,"画面窗口1","Visible",TRUE);
}
}
else
{
SetPropBOOL(lpszPictureName,"画面窗口1","Visible",FALSE);
//窗口X坐标
SetPropWord(lpszPictureName,"画面窗口1","Left",GetPropWord(lpszPictureName,lpszObjectName,"Left")-100);
//窗口Y坐标
SetPropWord(lpszPictureName,"画面窗口1","TOP",GetPropWord(lpszPictureName,lpszObjectName,"TOP")-350);
//改变量前缀
SetTagPrefix(lpszPictureName,"画面窗口1",SValue);
//刷新缓存,必须有这句不然不起作用
SetPictureName(lpszPictureName,"画面窗口1","Model_Valva.Pdl");
SetPropBOOL(lpszPictureName,"画面窗口1","Visible",TRUE);
}
//printf("逻辑运算结果为:%s。", ifequal ? "true" : "false");
另,请教各位怎么把红色部分重复的代码做到全局脚本里面,有没有老师给个例子?