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);
begin
if upAndroid in UniApplication.UniPlatform then
   ShowMessage('这是一个安卓设备!');
end;

2)、UniSession 对象 

UniSession返回当前会话的TUniGUISession类的实例。它包含与会话相关的所有信息。例如IP地址、用户代理、主机地址、平台相关数据等。UniSession还包含了一些重要的方法,可以用来控制一个session(如终止当前会话等):

procedure TMainForm.UniButton2Click(Sender: TObject);
begin
  UniSession.Terminate; //终止当前会话
end;
 
procedure TMainForm.UniButton2Click(Sender: TObject);
begin

//在当前窗口中重定向或跳转到一个新的地址

UniSession.UrlRedirect('http://www.newsite.com');
end;

与UniApplication类似,UniSession从uniGUI控件事件句柄中总是返回一个有效实例。例如,TUniButton实例总是属于某个会话。

procedure TMainForm.UniButton2Click(Sender: TObject);
var
  IPAddress : string;
begin

// 在TUniButton的事件中,我们可以获取UniSession的相关信息,如远程IP
  IPAddress := UniSession.RemoteIP;
 
end;

在下面的示例中,访问UniSession将导致访问冲突,因为UniThreadTimer不是uniGUI控件,它的事件不与任何会话关联。UniThreadTimer事件在单独的线程中异步运行。 
PS:TUniThreadTimer创建一个在自己的线程中运行的计时器。这与原来的TTimer或它的uniGUI等价的TUniTimer不同。禁止在TUniThreadTimer的事件处理程序中访问uniGUI可视化组件。

procedure TMainForm.UniThreadTimer1Timer(Sender: TObject);
var
  IPAddress : string;
begin

//这将导致访问冲突错误,因为没有与此事件关联的会话

IPAddress := UniSession.RemoteIP; 
end;

UniSession是一个“全局”对象,当从不同会话访问时,它可以返回不同的值。这与UniApplication的情况相同;UniSession实际上是一个在uniGUIApplication.pas中声明的全局函数。当在事件处理程序中调用时返回正确的会话实例。

unit uniGUIApplication;
 
interface
 
function UniSession: TUniGUISession;
function UniApplication: TUniGUIApplication;
...

3)、UniServerInstance 对象 

UniServerInstance对象是uniGUIServer.pas中定义的一个全局函数。它返回ServerModule的全局实例。

unit uniGUIServer;
 
interface
 
function UniServerInstance: TUniGUIServerModule;
...

【一起学UniGUI】--UniGUI的特殊对象(10)相关推荐

  1. 一步一步学VBScript(4)之WSH对象三

    一步一步学VBScript(4)之WSH对象三 前沿: 脚本可以干什么,它仅仅只是帮助您完成一个事件吗. 我觉得脚本是种生活.它帮你改变繁琐的重复劳动. 您可以让服务器管理着您的工作的.悠闲的品尝杯咖 ...

  2. 视频教程-跟宁哥学Go语言视频课程(10):反射-Go语言

    跟宁哥学Go语言视频课程(10):反射 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过 ...

  3. 跟宁哥学Go语言视频课程(10):反射-李宁-专题视频课程

    跟宁哥学Go语言视频课程(10):反射-53人已学习 课程介绍         本课程的主要内容: 1. 为什么需要反射 2. reflect.TypeOf 3. reflect.ValueOf 4. ...

  4. 学英语看美剧学地道英文必看的10部美剧!

    学英语看美剧学地道英文必看的10部美剧 1.Desperate housewives 绝望主妇 时而压抑.时而诙谐.人物性格刻划得鲜明,只是觉得剧情不是那么贴近生活,不过里面的句子还有哲理性,几个主演 ...

  5. 7-4 list 存储动物对象 (10 分)

    7-4 list 存储动物对象 (10 分) 本题要求在列表中存储动物,包括鸟和狗,请写代码完成下列内容: 1.定义抽象类Animal,包含私有属性name和age,为其完成setter.getter ...

  6. 大学计算机VBScript试题,一步一步学VBScript(5)之WSH对象四

    一步一步学VBScript(5)之WSH对象五 前沿: 当域控与脚本两者相遇的时候会产生什么呢. 哈哈.应该是一个问号.还有一个惊叹号. 这两天写了个脚本.DC上执行让AD中的计算机中的本地管理员组 ...

  7. 广工的计算机全国排名,广东工业大学排名2021 广东排名第10全国排名第152

    广东工业大学排名2019 广东排名第10全国排名第152 每年的大学排名位次争议很大,虽然各大学校长口头上称不在乎.不看重,但实际上却卯足干劲,希望学校排名靠前,因为大学排名一定程度上体现了高校的办学 ...

  8. 轻松学Pytorch –使用torchvision实现对象检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 大家好,前面一篇文章介绍了torchvision的模型ResNet ...

  9. 从零开始学PowerShell(9)创建PowerShell对象

    我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象.正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象. ...

最新文章

  1. 判断设备网络状态_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
  2. Myeclipse中导入项目后java类中汉字注释出现乱码问题(已解决)
  3. Docker实践(四)Dockerfile
  4. Java动态代理简述
  5. Java应用服务器对比:TomcatJettyGlassFishWildFly
  6. c xaml语言教程,Xamarin XAML语言教程基础语法篇大学霸
  7. Ubuntu 隐藏上方状态栏、左边任务栏及菜单按钮移到下方居中及隐藏(详细)
  8. 百度 bos php,Thinkphp5对接百度云对象存储 BOS(代码示例)
  9. 从庆祝动作解读科比和詹姆斯
  10. ☀️从0到1部署Hadoop☀️基于网站日志进行大数据分析【❤️建议收藏❤️】
  11. python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...
  12. Windows 安装Redis(图文详解)
  13. [软件人生]人生强硬也要懂得弯折——谈人性的两面
  14. 快速实现抖音的分享登录(android) 1
  15. 服装供应链管理系统介绍
  16. VR虚拟现实创新实验室综合解决方案
  17. Linux查看BIOS信息:dmidecode命令以及SMBIOS、DMI等
  18. 树莓派人脸识别打卡系统(python pyqt opencv)
  19. ActiveMQ入门-amq入门
  20. linux中wc命令怎么退出,linux中的wc命令

热门文章

  1. 济南职业学院计算机就业好吗,济南职业学院好不好?排名怎么样评价如何
  2. VS+openCV 用直方图统计像素(上)计算图像直方图、利用查找表修改图像外观
  3. [Study]Git
  4. C# WPF TabControl控件用法详解
  5. 解决电脑cpu锁频率0.4GHz问题
  6. 回退git add操作
  7. Bean 作用域,Bean生命周期,Bean执行原理
  8. matlab 虚数部分,MATLAB去掉一组数据中的虚数【多图】
  9. mt管理器主题修改教程_微信主题设置教程及链接来啦!
  10. ANSYS Mechanical产品介绍与功能汇总,速看