【一起学UniGUI】--UniGUI的特殊对象(10)
UniGUI的特殊对象主要有:UniApplication 对象、UniSession 对象、UniServerInstance 对象,下面分类进行简单概括说明,后面实战中结合实例再详细讲述。
1)、UniApplication 对象
UniApplication返回一个TUniGUIApplication实例,它是当前所有会话资源(主窗体MainForm、主模块MainModule和所有其他窗体和数据模块)的所有者。它是全局可用的,可以在uniGUI控件事件处理程序中访问。类似于传统VCL中的Application,UniApplication有几个有用的属性,可用于获取有关会话的信息。例如,URL参数、客户机屏幕宽度、客户机屏幕高度、设备类型、与客户机PC相关的信息和cookie。
当用代码创建窗体时,必须将其所有者设置为UniApplication。
procedure TMainForm.UniButton2Click(Sender: TObject); begin with TUniForm2.Create(UniApplication) do ShowModal; end; |
UniApplication本身实际上是一个函数,它为当前会话返回正确的TUniGUIApplication实例:
unit uniGUIApplication; interface function UniSession: TUniGUISession; function UniApplication: TUniGUIApplication; ... |
因此,UniApplication只能在事件处理程序中访问,该事件处理程序是由uniGUI控件触发的。
procedure TMainmForm.UnimButton1Click(Sender: TObject); |
2)、UniSession 对象
UniSession返回当前会话的TUniGUISession类的实例。它包含与会话相关的所有信息。例如IP地址、用户代理、主机地址、平台相关数据等。UniSession还包含了一些重要的方法,可以用来控制一个session(如终止当前会话等):
procedure TMainForm.UniButton2Click(Sender: TObject); //在当前窗口中重定向或跳转到一个新的地址 UniSession.UrlRedirect('http://www.newsite.com'); |
与UniApplication类似,UniSession从uniGUI控件事件句柄中总是返回一个有效实例。例如,TUniButton实例总是属于某个会话。
procedure TMainForm.UniButton2Click(Sender: TObject); // 在TUniButton的事件中,我们可以获取UniSession的相关信息,如远程IP |
在下面的示例中,访问UniSession将导致访问冲突,因为UniThreadTimer不是uniGUI控件,它的事件不与任何会话关联。UniThreadTimer事件在单独的线程中异步运行。
PS:TUniThreadTimer创建一个在自己的线程中运行的计时器。这与原来的TTimer或它的uniGUI等价的TUniTimer不同。禁止在TUniThreadTimer的事件处理程序中访问uniGUI可视化组件。
procedure TMainForm.UniThreadTimer1Timer(Sender: TObject); //这将导致访问冲突错误,因为没有与此事件关联的会话 IPAddress := UniSession.RemoteIP; |
UniSession是一个“全局”对象,当从不同会话访问时,它可以返回不同的值。这与UniApplication的情况相同;UniSession实际上是一个在uniGUIApplication.pas中声明的全局函数。当在事件处理程序中调用时返回正确的会话实例。
unit uniGUIApplication; |
3)、UniServerInstance 对象
UniServerInstance对象是uniGUIServer.pas中定义的一个全局函数。它返回ServerModule的全局实例。
unit uniGUIServer; |
【一起学UniGUI】--UniGUI的特殊对象(10)相关推荐
- 一步一步学VBScript(4)之WSH对象三
一步一步学VBScript(4)之WSH对象三 前沿: 脚本可以干什么,它仅仅只是帮助您完成一个事件吗. 我觉得脚本是种生活.它帮你改变繁琐的重复劳动. 您可以让服务器管理着您的工作的.悠闲的品尝杯咖 ...
- 视频教程-跟宁哥学Go语言视频课程(10):反射-Go语言
跟宁哥学Go语言视频课程(10):反射 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过 ...
- 跟宁哥学Go语言视频课程(10):反射-李宁-专题视频课程
跟宁哥学Go语言视频课程(10):反射-53人已学习 课程介绍 本课程的主要内容: 1. 为什么需要反射 2. reflect.TypeOf 3. reflect.ValueOf 4. ...
- 学英语看美剧学地道英文必看的10部美剧!
学英语看美剧学地道英文必看的10部美剧 1.Desperate housewives 绝望主妇 时而压抑.时而诙谐.人物性格刻划得鲜明,只是觉得剧情不是那么贴近生活,不过里面的句子还有哲理性,几个主演 ...
- 7-4 list 存储动物对象 (10 分)
7-4 list 存储动物对象 (10 分) 本题要求在列表中存储动物,包括鸟和狗,请写代码完成下列内容: 1.定义抽象类Animal,包含私有属性name和age,为其完成setter.getter ...
- 大学计算机VBScript试题,一步一步学VBScript(5)之WSH对象四
一步一步学VBScript(5)之WSH对象五 前沿: 当域控与脚本两者相遇的时候会产生什么呢. 哈哈.应该是一个问号.还有一个惊叹号. 这两天写了个脚本.DC上执行让AD中的计算机中的本地管理员组 ...
- 广工的计算机全国排名,广东工业大学排名2021 广东排名第10全国排名第152
广东工业大学排名2019 广东排名第10全国排名第152 每年的大学排名位次争议很大,虽然各大学校长口头上称不在乎.不看重,但实际上却卯足干劲,希望学校排名靠前,因为大学排名一定程度上体现了高校的办学 ...
- 轻松学Pytorch –使用torchvision实现对象检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 大家好,前面一篇文章介绍了torchvision的模型ResNet ...
- 从零开始学PowerShell(9)创建PowerShell对象
我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象.正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象. ...
最新文章
- 判断设备网络状态_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
- Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)
- Docker实践(四)Dockerfile
- Java动态代理简述
- Java应用服务器对比:TomcatJettyGlassFishWildFly
- c xaml语言教程,Xamarin XAML语言教程基础语法篇大学霸
- Ubuntu 隐藏上方状态栏、左边任务栏及菜单按钮移到下方居中及隐藏(详细)
- 百度 bos php,Thinkphp5对接百度云对象存储 BOS(代码示例)
- 从庆祝动作解读科比和詹姆斯
- ☀️从0到1部署Hadoop☀️基于网站日志进行大数据分析【❤️建议收藏❤️】
- python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...
- Windows 安装Redis(图文详解)
- [软件人生]人生强硬也要懂得弯折——谈人性的两面
- 快速实现抖音的分享登录(android) 1
- 服装供应链管理系统介绍
- VR虚拟现实创新实验室综合解决方案
- Linux查看BIOS信息:dmidecode命令以及SMBIOS、DMI等
- 树莓派人脸识别打卡系统(python pyqt opencv)
- ActiveMQ入门-amq入门
- linux中wc命令怎么退出,linux中的wc命令
热门文章
- 济南职业学院计算机就业好吗,济南职业学院好不好?排名怎么样评价如何
- VS+openCV 用直方图统计像素(上)计算图像直方图、利用查找表修改图像外观
- [Study]Git
- C# WPF TabControl控件用法详解
- 解决电脑cpu锁频率0.4GHz问题
- 回退git add操作
- Bean 作用域,Bean生命周期,Bean执行原理
- matlab 虚数部分,MATLAB去掉一组数据中的虚数【多图】
- mt管理器主题修改教程_微信主题设置教程及链接来啦!
- ANSYS Mechanical产品介绍与功能汇总,速看