【一起学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);
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;
...

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值