哈喽,你好啊,我是雷工!
在用KingSCADA做项目时,当我们点击不同的控制按钮,都可以弹出对应的控制弹窗。
在常规不做设置的情况下弹窗都是出现在固定的位置,要么一直出现在左上角,要么一直出现在屏幕中间。
点击很不方便,所以想如何实现点击哪里,弹窗就在点击位置的附近显示弹窗。
以下为样例实现该过程的记录。
一、效果演示:
1、当未添加位置处理脚本时,无论点击哪个位置的按钮,均在左上角显示弹窗。
2、当添加打开位置的处理脚本后,点击不同按钮,会在所点击按钮的附近打开弹窗。
二、实现思路
1、先获取鼠标点击位置的X坐标和Y坐标;
2、将获取的X坐标再加一个数值作为弹窗要展示位置的X坐标,同样Y坐标再加一个数值作为弹窗要展示位置的Y坐标。
3、考虑到若打开位置加上弹窗的尺寸可能超出屏幕尺寸的情况,可以做个if判断,如果起始位置坐标加上弹窗尺寸会超出屏幕,则向反方向展示弹窗。
三、实现步骤
1、首先创建弹窗
2、在主界面创建按钮
3、在按钮点击脚本中添加获取点击位置,及展示弹窗位置的坐标。
4、脚本代码:
int X,Y;
x=GetCursorPosX();
y=GetCursorPosY();
if (x+310<1920)
{x=x+10;
}
else
{x=x-300;
}
if(y+180<960)
{y=y+10;
}
else
{y=y-170;
}
ShowPictureAt( "弹窗", x, y );
5、只要弹窗尺寸一致,所有弹窗按钮中均可放入该段代码,如果需要类似功能的按钮,可以直接复制按钮,内部处理代码不用更改,比较方便。
四、后记
这是在项目中用到的一种方法,或许不够智能,但也能实现,大家有更好的方法欢迎评论指导。
类似这种不是硬性功能要求的人性化处理,更能体现系统实施的品质。
无论SCADA还是C#,开发上位机系统有些思路可以相互借鉴,有些东西都是相通的。
廊坊市·高楼镇
2023-12-25