 自定函数
自定函数
  # FastWeb 自定函数
- 适用平台:WEB(桌面),APP(移动)
# 1. UGMM类函数
UGMM类函数在程序中调用时,必须以UGMM.开头。
# 1.1. ApplicationVersion
Function ApplicationVersion:String;
说明: 获取应用版本 返回值: 字符类型String
- 示例
//JScript
  UgLabel01.Caption = UGMM.ApplicationVersion;
2
//PasScript
begin
  UgLabel01.Cantion := UGMM.ApplicationVersion;
End;
2
3
4
// Make sure to add code blocks to your code group
# 1.2. CreateGuid
Function  CreateGuid:string;
说明: 创建GUID唯一编号 返回值: 字符类型String
- 示例
//JScript
  var vGuid;
  vGuid = UGMM.CreateGuid;
2
3
//PasScript
var
 vGuid:string;
begin
  vGuid := UGMM.CreateGuid;
End;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 1.3. CreateStringList
Function CreateStringList(AEncoding:string='UTF8'):TStringList;
说明: 创建字符串列表指定编码类型 返回值: TStringList类型
- CreateStringList 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AEncoding | 指定编码类型(UTF-7,UTF-8,UniCode) | 
- 示例
//JScript
  var vStrings;
  vStrings = UGMM.CreateStringList("UTF-8");
2
3
//PasScript
var
 vStrings:TStringList;
begin
 vStrings:=UGMM.CreateStringList('UTF-8');
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 1.4. DecodeString
function DecodeString(AText:String):string;
说明: HTTP编码 返回值: 字符类型String
- DecodeString 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AText | 指定需要解密的字符串 | 
- 示例
//JScript
  ShowMessage(UGMM.DecodeString("NW9pUjVwaXY1TGl0NVp1OTVMcTY3N3lCUkdWc2NHaHA="));
2
//PasScript
begin
  ShowMessage(UGMM.DecodeString('NW9pUjVwaXY1TGl0NVp1OTVMcTY3N3lCUkdWc2NHaHA='));
End;
2
3
4
// Make sure to add code blocks to your code group
- 字符串解密结果
我是中国人!
# 1.5. EncodeString
function EncodeString(AText:String):string;
说明: 字符加密 返回值: 字符类型String
- EncodeString 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AText | 指定需要加密的字符串 | 
- 示例
//JScript
  ShowMessage(UGMM.EncodeString("Hi,Hello"));
2
//PasScript
begin
  ShowMessage(UGMM.EncodeString('Hi,Hello'));
End;
2
3
4
// Make sure to add code blocks to your code group
- 字符串加密结果
U0drc1NHVnNiRzg9UkdWc2NHaHA=
# 1.6. Expexcel
function  ExpExcel(ADBGrid:TUgDBGrid;Const ACaption,ATitle:String):Boolean;
说明: 打开导出数据表至Excel的文本。 返回值: Boolean值
- GetObject 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ADBGrid | 指定一个TUgDBGrid类表格 | 
| ACaption | 指定导出对话框的标题 | 
| ATitle | 指定导出的表格的标题名称 | 
- 示例
//JScript
  UGMM.ExpExcel(gridFrames,UGMM.LT("模块列表(WEB)"),UGMM.LT("模块列表(WEB)"));
2
//PasScript
  UGMM.ExpExcel(gridFrames,UGMM.LT('模块列表(WEB)'),UGMM.LT('模块列表(WEB)'));
2
// Make sure to add code blocks to your code group
# 1.7. FileUpload
Function UpLoadFile(Const AOwner:TComponent;Const AFrameGuid,AOrderCode:String;Const ACapacitySpace:int64 = 30 * 1024 * 1024;Const UpLoadFileEvent:TUpLoadFileEvent = Nil):string;
说明: 通过文件管理器上传文件 返回值: 无
- FileUpload 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AOwner | 所属的主组件对象 | 
| AFrameGuid | 所属的主ID对象,对应会在文件上传目录下创建与ID同名的子文件夹 | 
| AOrderCode | 所属的主ID下的子ID对象,对应会在文件上传目录的主ID目录下,创建与子ID同名的文件夹 | 
| ACapacitySpace | 设定目录中允许上传的最大文件合计大小,以字节为单位 | 
| UpLoadFileEvent | 当文件上传完成时需要触发的事件名称 | 
- 示例
//JScript
function UgButton01OnClick(sender)
{
  //通过与uploadfinished绑定,获取上传的文件名称
  UGMM.UpLoadFile(self,"ABC","12123",1000000,&uploadfinished);
}
function uploadfinished(aUpLoadList)
{
  showmessage(aUpLoadList);
}
2
3
4
5
6
7
8
9
10
11
//PasScript
procedure UgButton01OnClick(sender: TObject);
begin
  //通过与uploadfinished绑定,获取上传的文件名称
  UGMM.UpLoadFile(self,'ABC','12123',1000000,@uploadfinished);
end;
procedure uploadfinished(Const aUpLoadList:String);
Begin
  showmessage(aUpLoadList);
end;
2
3
4
5
6
7
8
9
10
11
// Make sure to add code blocks to your code group
# 1.8. GetObject
Function  GetObject(Const ASign:String):TObject;
说明: 获取线程管理共享对象 返回值: 对象类TObject
- GetObject 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ASign | 指定一个对象名称Name | 
- 示例
//JScript
  var Obj;
  obj = UGMM.GetObject("ObjectName");
2
3
//PasScript
var
 obj:TObject;
begin
  obj := UGMM.GetObject('ObjectName');
End;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 1.9. GetWebSubForm
Function  GetWebSubForm(ACaption:String;Const AMenuFlag:String = '';Const AType:String = 'WEB'):TUniForm;
说明: 获取子窗体(Desktop) 返回值: 窗体类TUniForm
- GetWebSubForm 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ACaption | 指定一个子窗体名称,可使用模块编码或者模块标题 | 
| AMenuFlag | 菜单参数信息,呼叫运行后,可在窗口模块的 MenuFlag属性中获取数值 | 
| AType | 指定子窗体类型(默认Web) | 
- 示例
//JScript
  var F,i;
  F = UGMM.GetWebSubForm("WebSubForm");
  TUgWebForm(F).Caption = "SubForm"; 
  ...
  if (F.ShowModal == mrOK) 
  {
     TUgWebForm(F).Close;
  }
2
3
4
5
6
7
8
9
//PasScript
Var
  F:TUniForm;
  i:String;
begin
  //打开任务登记
  F := UGMM.GetWebSubForm('WebSubForm');
  TUgWebForm(F).Caption := 'SubForm'; 
  ...
  if F.ShowModal = mrOK then 
  Begin
     TUgWebForm(F).Close;
  End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
# 1.10. GetAppSubForm
Function  GetAppSubForm(ACaption:String;Const AMenuFlag:String = '';Const AFullScreen:Boolean = True):TUnimForm;
说明: 获取子窗体(Mobile) 返回值: 窗体类TUniForm
- GetAppSubForm 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ACaption | 指定一个子窗体名称,可使用模块编码或者模块标题 | 
| AMenuFlag | 菜单参数信息,呼叫运行后,可在窗口模块的 MenuFlag属性中获取数值 | 
| AFullScreen | 指定是否全屏幕显示 | 
- 示例
//JScript
  var F,i;
  F = UGMM.GetAppSubForm("AppSubForm");
  TUgAppForm(F).Caption = "SubForm"; 
  ...
  if (F.ShowModal == mrOK) 
  {
     TUgAppForm(F).Close;
  }
2
3
4
5
6
7
8
9
//PasScript
Var
  F:TUnimForm;
  i:String;
begin
  //打开任务登记
  F := UGMM.GetAppSubForm('AppSubForm');
  TUgAppForm(F).Caption := 'SubForm'; 
  ...
  if F.ShowModal = mrOK then 
  Begin
     TUgAppForm(F).Close;
  End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
# 1.11. GetBeanCaption
function  GetBeanCaption(AGuid:String):string;
说明:通过Bean模块ID来获取Bean模块的标题描述名称。 返回值: string
- GetBeanCaption 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定一个子窗体ID | 
# 1.12. GetBeanCode
function  GetBeanCode(AGuid:String):string;
说明: 通过Bean模块ID来获取Bean模块的编号 返回值: string
- GetBeanCode 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定一个子窗体ID | 
- 示例
//JScript
UGMM.GetBeanCode("8F62424E-FD72-422B-8C2F-0A25A4F9FEAC");
2
//PasScript
UGMM.GetBeanCode('8F62424E-FD72-422B-8C2F-0A25A4F9FEAC');
2
// Make sure to add code blocks to your code group
# 1.13. GetBeanToSql
function  GetBeanToSql(Const AGuid:String):string;
说明:将当前的Bean模块输出为SQL脚本,用于导入至其他项目使用。 返回值String
- GetBeanToSql 函数语法说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定一个子窗体ID | 
# 1.14. GetNodeDataLink
Function GetNodeDataLink(Const ANodeName:String):TFDConnection;
说明: 获取节点数据库 返回值: TFDConnection
- GetNodeDataLink 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ACaption | 指定一个子窗体名称 | 
| AFullScreen | 指定是否全屏幕显示 | 
- 示例
//JScript
  var FDConn;
  FDConn = UGMM.GetNodeDataLink("FastERP");
  UgFDQuery01 := TUgFDQuery01.Create;
  UgFDQuery01.Connection := FDConn;
  try{
     //打开数据
    UgFDQuery01.SQL.Text := "Select * from Basic_Unit";
    UgFDQuery01.Open();
  }
  Finally{
    UgFDQuery01.free;
  }
2
3
4
5
6
7
8
9
10
11
12
13
//PasScript
Var  
  FDConn:TFDConnection;
begin
  //获取 FastERP 节点数据库
  FDConn := UGMM.GetNodeDataLink('FastERP');
  UgFDQuery01 := TUgFDQuery01.Create;
  UgFDQuery01.Connection := FDConn;
  try
     //打开数据
    UgFDQuery01.SQL.Text := 'Select * from Basic_Unit';
    UgFDQuery01.Open();
  Finally
    UgFDQuery01.free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
---1.14.
# 1.15. GetRunFrame
Function  GetRunFrame(AOwner:TComponent;AKey:String;AGetSoure:TGetSource):TComponent;
说明: 获取运行模块 返回值: TComponent类型
- GetRunFrame 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AOwner | 批定窗体所属者 | 
| AKey | 指定窗体的唯一Guid | 
| AGetSoure | 批定窗体来源类型(gsData,gsFile) | 
- 示例
//JScript
  var M,R,C;
  C = UGMM.GetRunFrame(Self,H,iif(pos(".",H) > 0,gsFile,gsData));
  if (C != nil)
  {
    TControl(C).Parent = Self;
    C.Name="WebHomePages";
    TUGWebRunFrame(C).Align = TAlign.alClient;
    if (C.GetInterface(IUGRunScript,R))
    R.Run(nil);
  }
2
3
4
5
6
7
8
9
10
11
//PasScript
var
  M : TMemoryStream;
  R : IUGRunScript;
  C : TComponent;
begin
  C := UGMM.GetRunFrame(Self,H,iif(pos('.',H) > 0,gsFile,gsData));
  if C <> nil then
  begin
    TControl(C).Parent := Self;
    C.Name:='WebHomePages';
    TUGWebRunFrame(C).Align := TAlign.alClient;
    if C.GetInterface(IUGRunScript,R) Then
    R.Run(nil);
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 1.16. GetDesignFrame
Function  GetDesignFrame(AOwner:TComponent;AGuid:String):TComponent;
说明: 获取模块设计器 返回值: TComponent类型
- GetDesignFrame 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AOwner | 批定窗体所属者 | 
| AGuid | 指定窗体的唯一Guid | 
- 示例
//JScript
  var p,f,g;
  if (cdsFrames.IsEmpty)
    RaiseException(UGMM.LT("Can't design without record"));
  if (UGMM.Informations.Values["UserGuid"] != cdsFrames.FieldbyName("Developer").asString)
    RaiseException(UGMM.LT("You do not have permission to design this module")); 
  if (Self.IsDesignMode)
    RaiseException(UGMM.LT("The module list is in IDE development mode. Design modules are prohibited"));
  g = cdsFrames.FieldbyName("Guid").AsString;
  p = TUniTabSheet(Self.Parent.Owner.FindComponent("PDesign" + ReplaceText(ReplaceText(g,"-","_"),".","_")));
  if (!Assigned(p))
  {
    p = TUniTabSheet(Self.Parent.Owner);
    p.Name = "PDesign" + ReplaceText(ReplaceText(g,"-","_"),".","_");
    p.Caption =cdsFrames.FieldbyName("Caption").AsString + ".Web";
    p.PageControl = TUniTabSheet(Self.Parent).PageControl;
    p.Closable = True;
    f = TUGDesignFrame(UGMM.GetDesignFrame(p,g));
    f.Align = alClient;
    f.Parent = p;
  }
  p.PageControl.ActivePage = p;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//PasScript
Var
  p:TUniTabSheet;
  f:TUGDesignFrame;
  g:String;
Begin
  if cdsFrames.IsEmpty then
    RaiseException(UGMM.LT('Can''t design without record'));
  if UGMM.Informations.Values['UserGuid'] <> cdsFrames.FieldbyName('Developer').asString then
    RaiseException(UGMM.LT('You do not have permission to design this module')); 
  if Self.IsDesignMode then 
    RaiseException(UGMM.LT('The module list is in IDE development mode. Design modules are prohibited'));
  g := cdsFrames.FieldbyName('Guid').AsString;
  p := TUniTabSheet(Self.Parent.Owner.FindComponent('PDesign' + ReplaceText(ReplaceText(g,'-','_'),'.','_')));
  //showmessage(Self.Parent.Owner.name);
  if Not Assigned(p) then
  Begin
    p := TUniTabSheet.Create(Self.Parent.Owner);
    p.Name := 'PDesign' + ReplaceText(ReplaceText(g,'-','_'),'.','_');
    p.Caption :=cdsFrames.FieldbyName('Caption').AsString + '.Web';
    p.PageControl := TUniTabSheet(Self.Parent).PageControl;
    p.Closable := True;
    f := TUGDesignFrame(UGMM.GetDesignFrame(p,g));
    f.Align := alClient;
    f.Parent := p;
  End;
  p.PageControl.ActivePage := p;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Make sure to add code blocks to your code group
# 1.17. GetDesignFormatEditing
Function  GetDesignFormatEditing(AGuid:String):TComponent;
说明: 获取模块编辑器 返回值: TComponent类型
- GetDesignFormatEditing 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定窗体的唯一Guid | 
- 示例
//JScript
  var f,g;
  if (cdsFrames.IsEmpty)
    RaiseException(UGMM.LT("Can't design without record"));
  if (UGMM.Informations.Values["UserGuid"] != cdsFrames.FieldbyName("Developer").asString)
    RaiseException(UGMM.LT("You do not have permission to design this module")); 
  if (Self.IsDesignMode)
    RaiseException(UGMM.LT("The module list is in IDE development mode. Design modules are prohibited"));
  g = cdsFrames.FieldbyName("Guid").AsString;
  f = TUniForm(UGMM.GetDesignFormatEditing(g));
  f.ShowModal;
2
3
4
5
6
7
8
9
10
11
//PasScript
Var
  f:TUniForm;
  g:String;
Begin
  if cdsFrames.IsEmpty then
    RaiseException(UGMM.LT('Can''t design without record'));
  if UGMM.Informations.Values['UserGuid'] <> cdsFrames.FieldbyName('Developer').asString then
    RaiseException(UGMM.LT('You do not have permission to design this module')); 
  if Self.IsDesignMode then 
    RaiseException(UGMM.LT('The module list is in IDE development mode. Design modules are prohibited'));
  g := cdsFrames.FieldbyName('Guid').AsString;
  f := TUniForm(UGMM.GetDesignFormatEditing(g));
  f.ShowModal;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Make sure to add code blocks to your code group
# 1.18. GetDesignRestAPI
    Function  GetDesignRestAPI(AOwner:TComponent;AGuid:String):TComponent;
说明: 获取RestAPI接口编辑器 返回值: TComponent类型
- GetDesignRestAPI 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AOwner | 批定窗体所属者 | 
| AGuid | 指定RestAPI接口的唯一Guid | 
- 示例
//JScript
  var p,f,g;
  if (cdsFrames.IsEmpty)
    RaiseException(UGMM.LT("Can't design without record"));
  if (UGMM.Informations.Values["UserGuid"] != cdsFrames.FieldbyName("Developer").asString)
    RaiseException(UGMM.LT("You do not have permission to design this module")); 
  if (Self.IsDesignMode)
    RaiseException(UGMM.LT("The module list is in IDE development mode. Design modules are prohibited"));
  g = cdsFrames.FieldbyName("Guid").AsString;
  p = TUniTabSheet(Self.Parent.Owner.FindComponent("PDesign" + ReplaceText(ReplaceText(g,"-","_"),".","_")));
  if (!Assigned(p))
  {
    p = TUniTabSheet(Self.Parent.Owner);
    p.Name = "PDesign" + ReplaceText(ReplaceText(g,"-","_"),".","_");
    p.Caption =cdsFrames.FieldbyName("Caption").AsString + ".Web";
    p.PageControl = TUniTabSheet(Self.Parent).PageControl;
    p.Closable = True;
    f = TUGDesignFrame(UGMM.GetDesignFrame(p,g));
    f.Align = alClient;
    f.Parent = p;
  }
  p.PageControl.ActivePage = p;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//PasScript
Var
  g:String;
  f:TUniFrame;
  p:TUniTabSheet;
begin
  if cdsRestAPIs.IsEmpty then
    RaiseException(UGMM.LT('Can''t design without record'));
  if UGMM.Informations.Values['UserGuid'] <> cdsRestAPIs.FieldbyName('Developer').asString then
    RaiseException(UGMM.LT('You do not have permission to design this module')); 
  if Self.IsDesignMode then 
    RaiseException(UGMM.LT('The module list is in IDE development mode. Design modules are prohibited'));
  g := cdsRestAPIs.FieldbyName('Guid').AsString;
  p := TUniTabSheet(Self.Parent.Owner.FindComponent('PDesign' + ReplaceText(ReplaceText(g,'-','_'),'.','_')));
  if Not Assigned(p) then
  Begin
    p := TUniTabSheet.Create(Self.Parent.Owner);
    p.Name := 'PDesign' + ReplaceText(ReplaceText(g,'-','_'),'.','_');
    p.Caption :=cdsRestAPIs.FieldbyName('APIName').AsString + '.Pas';
    p.PageControl := TUniTabSheet(Self.Parent).PageControl;
    p.Closable := True;
    f := TUniFrame(UGMM.GetDesignRestAPI(p,g));
    f.Align := alClient;
    f.Parent := p;
  End;
  p.PageControl.ActivePage := p;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Make sure to add code blocks to your code group
# 1.19. GetFrameCaption
function  GetFrameCaption(AGuid:String):string;
说明: 根据模块地址获取模块标题 返回值: string类型
- GetFrameCaption 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定模块的唯一地址Guid | 
- 示例
//JScript
  var vCaption;
  vCaption = UGMM.GetFrameCaption("29B1B867-2CC6-413C-9058-FB332D3D0EDD");
2
3
//PasScript
var
 vCaption:String;
begin
  //获取模块标题
  vCaption := UGMM.GetFrameCaption('29B1B867-2CC6-413C-9058-FB332D3D0EDD');
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
# 1.20. GetLanguageByGrid
function  GetLanguageByGrid(ALanuageName:String):string;
说明: 根据语言名称查找语言地址 返回值: string类型
- GetLanguageByGrid 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ALanuageName | 指定语言名称 | 
# 1.21. GetLanguageByName
function  GetLanguageByName(ALanuageGuid:String):string;
说明: 根据语言地址查找语言名称 返回值: string类型
- GetLanguageByName 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ALanuageGuid | 指定语言址址Guid | 
# 1.22. GetUnitCode
function  GetUnitCode(Const AGuid:String;Const AUnitName:string = ''):string;
说明: 获取公共单元代码 返回值: string类型
- GetUnitCode 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定模块唯一地址Guid | 
| AUnitName | 指定模块单元名称(可选) | 
# 1.23. GetNavigRoleGuid
Function  GetNavigRoleGuid(ANavig:Integer;ACreateTime:TDateTime):String;
说明: 获取导航角色存储地址 返回值: string类型
- GetNavigRoleGuid 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ANavig | 指定排序顺序(tyFirst = 1;tyPrior = 2;tyNext = 3;tyLast = 4;) | 
| ACreateTime | 指定排序时间 | 
# 1.24. GetNavigUserGuid
Function  GetNavigUserGuid(ANavig:Integer;ACreateTime:TDateTime):String;
说明: 获取导航用户存储地址 返回值: string类型
- GetNavigUserGuid 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ANavig | 指定排序顺序(tyFirst = 1;tyPrior = 2;tyNext = 3;tyLast = 4;) | 
| ACreateTime | 指定排序时间 | 
# 1.25. GetNavigUserGuid
Function  GetNavigUserGuid(ANavig:Integer;ACreateTime:TDateTime):String;
说明: 获取导航用户存储地址 返回值: string类型
- GetNavigUserGuid 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ANavig | 指定排序顺序(tyFirst = 1;tyPrior = 2;tyNext = 3;tyLast = 4;) | 
| ACreateTime | 指定排序时间 | 
# 1.26. GetDllComponent
Function  GetDllComponent(APathName:String;AOwner:TComponent):TComponent;
说明: 获取DLL中的窗体对象 返回值: TComponent类型
- GetDllComponent 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| APathName | 指定窗体路径 | 
| AOwner | 指定窗体的所有者Owner | 
# 1.27. GetSessionList
Function  GetSessionList:TClientDataSet;
说明: 获取会话列表 返回值: TComponent类型
- GetSessionList 函数语法中各部分说明 无
# 1.28. GetSQLCommand
function  GetSQLCommand(Const ASQLCommandId:String):TSQLCommand;
说明:返回SQLCommand对象。 返回值:TSQLCommand对象。
- GetSQLCommand 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ASQLCommandId | 预设SQL的编号 | 
# 1.29. GetSQLCommandNodeName
function  GetSQLCommandNodeName(ASQLCommandId:String):string;
说明:返回预设SQL对应的节点数据库名称。 返回值:String类型。
- GetSQLCommandNodeName 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ASQLCommandId | 预设SQL的编号 | 
//JScript
Strings = UGMM.GetSQLCommandNodeName("SQL001");
2
//PasScript
Strings := UGMM.GetSQLCommandNodeName('SQL001');
2
// Make sure to add code blocks to your code group
# 1.30. GetSQLCommandText
function  GetSQLCommandText(Const ASQLCommandId:String):String;
说明:返回预设SQL文本的内容。 返回值:String类型。
- GetSQLCommand 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ASQLCommandId | 预设SQL的编号 | 
//JScript
Strings = UGMM.GetSQLCommandText("SQL001");
2
//PasScript
Strings := UGMM.GetSQLCommandText('SQL001');
2
// Make sure to add code blocks to your code group
# 1.31. GetWebSubForm
Function GetWebSubForm(AModuleName:String): TUgWebForm;
说明:根据指定的模块编号打开模块,显示在窗口中。 返回值:TUgWebForm 类型。
- GetWebSubForm 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AModuleName | 要打开的模块的编号或模块的名称 | 
//JScript
  var F;
  //打开布种资料编辑界面	W-EQ-MOD-2120-2
  F = UGMM.GetWebSubForm("W-EQ-MOD-2120-2");
  if (F.ShowModal == mrOK)
  {
  }
  //释放打开的窗口W-EQ-MOD-2120-2
  UGMM.DelWebSubForm("W-EQ-MOD-2120-2");
2
3
4
5
6
7
8
9
10
//PasScript
var
  F: TUgWebForm;
begin
  F := UGMM.GetWebSubForm('W-EQ-MOD-2120-2');
  if F.ShowModal = mrOK then
  begin
  
  end;
  //释放打开的窗口W-EQ-MOD-2120-2
  UGMM.DelWebSubForm('W-EQ-MOD-2120-2');
end;
2
3
4
5
6
7
8
9
10
11
12
13
// Make sure to add code blocks to your code group
# 1.32. GetRValue
function GetRValue(ADelphiColor: TColor): Integer;
说明: 将TColor表示的颜色转换为RGB表示的颜色,提取R的值。 返回值: 整数类型。
- GetRValue 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ADelphiColor | 要转换的TColor颜色 | 
# 1.33. GetGValue
function GetGValue(ADelphiColor: TColor): Integer;
说明: 将TColor表示的颜色转换为RGB表示的颜色,提取G的值。 返回值: 整数类型。
- GetGValue 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ADelphiColor | 要转换的TColor颜色 | 
# 1.34. GetBValue
function GetBValue(ADelphiColor: TColor): Integer;
说明: 将TColor表示的颜色转换为RGB表示的颜色,提取B的值。 返回值: 整数类型。
- GetBValue 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ADelphiColor | 要转换的TColor颜色 | 
# 1.35. HTMLRgbtoHTMLColor
function HTMLRgbtoHTMLColor(Const AR,AG,AB: integer):String;
说明: 将用RBG数值表示的颜色值转换为HTML颜色字符串 返回值: 字符类型String
- HTMLRgbtoHTMLColor 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AR,AG,AB | 要转换的颜色的RGB值 | 
# 1.36. HTTPDecode
function HTTPDecode(const AStr: string): string;
说明: HTTP解码 返回值: 字符类型String
- HTTPDecode 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AStr | 指定需要解码的字符串 | 
# 1.37. HTTPEncode
function HTTPEncode(const AStr: string): string;
说明: HTTP编码 返回值: 字符类型String
- HTTPEncode 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AStr | 指定需要编码的字符串 | 
# 1.38. ImpExcel
function ImpExcel(ADBGrid:TUgDBGrid;Const ACaption,ARequiredItems:String):Boolean;
说明: 从Excel表格中选择数据导入至数据表中。 返回值: 布尔类型: Boolean。
- ImpExcel函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ADBGrid | 要接受数据的数据表格控件名称 | 
| ACaption | 打开的导入窗口的标题名称 | 
| ARequiredItems | 设置所需项的名称,可留空后在打开窗口中进行设置 | 
- 示例
我们可以为其分配一个按钮,一个数据表格控件以触发事件:
//JScript
function UgButton05OnClick(sender){
    if (UGMM.ImpExcel(UgDBGrid01,"Import Excel",""))
    {
      UgRFDataSet01.ApplyUpdates(-1);
    }
}
{
  UgRFDataSet01.Connection = GETRFWeb;
  UgRFDataSet01.SQL.Text = "SELECT TOP 0 * FROM Pass_Cust";
  UgRFDataSet01.Open;
}
2
3
4
5
6
7
8
9
10
11
12
13
//PasScript
procedure UgButton05OnClick(sender: tobject);
begin
    if UGMM.ImpExcel(UgDBGrid01,'Import Excel','') then
    begin
      UgRFDataSet01.ApplyUpdates(-1);
    End;
end;
Begin
  UgRFDataSet01.Connection := GETRFWeb;
  UgRFDataSet01.SQL.Text := 'SELECT TOP 0 * FROM Pass_Cust';
  UgRFDataSet01.Open;
End.
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
运行后会打开界面,首先需要选择Excel文件上传。请注意,这种方式对上传的表格表头有要求,表格的第一行必须是列的名称。且表格中的其余空白行不能有修改属性等的操作。

  点击[Browse...]选择文件并点击[Upload]上传,右侧的表中双击各个行的Excel列名,在下拉表格中选择表格中对应的列名。

  选择完成后,点击右侧的[导入]按钮,开始执行导入操作。进度条达到100%后自动关闭对话框返回至原先的界面。

# 1.39. LT
Function  LT(AText:String):string;
说明: 获取言语信息 返回值: 字符类型String
- LT 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AText | 指定多语言关键字(默认语言内容) | 
- 示例
//JScript
  UgLabel01.Cantion := UGMM.LT("Cust Name");
2
//PasScript
begin
  UgLabel01.Cantion := UGMM.LT('Cust Name');
End;
2
3
4
// Make sure to add code blocks to your code group
# 1.40. LogInChecking
Function LogInChecking(AUserType,AUserName,APassWord,ALenguage,AModeType:String):Boolean;
说明: 验证用户登录 返回值: Boolean类型
- LogInChecking 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AUserType | 用户类型(开发用户、框架用户、系统用户) | 
| AUserName | 登录用户名 | 
| APassWord | 登录用户密码 | 
| ALenguage | 指定用户登录语言 | 
| AModeType | 指定登录类型(Web,App) | 
- 示例
//JScript
  //验证用户密码
  if UGMM.LogInChecking(GetSignInType(FSignInType),edUserName.Text,edPassWord.Text,edLanguage.Text,"WEB")
  {//密码正确时登陆
   ...
  }
2
3
4
5
6
//PasScript
begin
  //验证用户密码
  if UGMM.LogInChecking(GetSignInType(FSignInType),edUserName.Text,edPassWord.Text,edLanguage.Text,'WEB') then
  begin//密码正确时登陆
   ...
  end;
end;
2
3
4
5
6
7
8
// Make sure to add code blocks to your code group
# 1.41. SendWsMsg
function SendWsMsg(const acusername, acname, accom, atag, acevent: string;acparams:TStringlist=nil): Boolean;
说明:向指定的用户登录的Bean窗口发送WebSocket信息。 返回值:Boolean,用于反馈是否发送成功。
- SendWsMsg 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| acusername | 登录的用户名称 | 
| acname | 动作名称,指定为 callback | 
| accom | 调用的Bean模块的编号 | 
| atag | 绑定的控件的Tag编号 | 
| acevent | 调用的事件名称 | 
| acparams | 参数信息,以键值对的方式进行 | 
- 示例
//JScript
  var l;
  l = new TStringList();
  l.Values["text"] = "Hello WebSocket Test";
  if (UGMM.SendWsMsg("demo","callback","bean-001","updatememo","0",l)) 
  { 
    ShowMessage("Send Success!");  
  }
  l.Free;
2
3
4
5
6
7
8
9
//PasScript
var 
  l: TStringList;
begin
  l := TStringList.Create();
  l.Values['text'] := 'Hello WebSocket Test';
  if (UGMM.SendWsMsg('demo','callback','bean-001','updatememo','0',l))  then
  begin
    ShowMessage('Send Success!');  
  end;
  l.Free;
end;
2
3
4
5
6
7
8
9
10
11
12
// Make sure to add code blocks to your code group
# 1.42. SendWsMsgBySId
function SendWsMsgBySId(const sid, msg: string): Boolean;
说明:向指定的会话ID的客户端发送WebSocket信息。 返回值:Boolean,用于反馈是否发送成功。
- SendWsMsgBySId 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| sid | 指定会话的名称 | 
| msg | 要发送的消息内容 | 
- 示例
//JScript
  UGMM.SendWsMsgBySId("esp32_001","Off");
2
//PasScript
  UGMM.SendWsMsgBySId('esp32_001','Off');
2
// Make sure to add code blocks to your code group
# 1.43. SendWsMsgByStr
function SendWsMsgByStr(const msg: string): Boolean;
说明:向WS服务器发送WebSocket信息。 返回值:Boolean,用于反馈是否发送成功。
- SendWsMsgByStr 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| msg | 要发送的消息内容,仅支持传输指定的json | 
- 示例
//JScript
  msg = "{" +
    "\"username\": \"demo\"," +              					 		//WebSocket消息发送的目标用户
     "\"action\": \"callback\"," +            					 		//WebSocket消息告知IsoBean执行的动作
     "\"tag\": \"0\"," + 
     "\"data\": {" +
        "\"callbackcomponent\": \"wb-das-0001_dashboard-demo1\"," +   	//执行动作的目标组件名称
        "\"callbackeventname\": \"update\"," +  			//执行触发OnAjaxEvent事件的 eventname(事件名称)
    	"\"callbackparams\": [" +             						 //传输的键值,可以有一对或者多对
      	"{" +
            "\"paramname\": \"type\"," +
        	"\"paramvalue\": \"header\"" +
      	"}," +
      	"{" +
        	"\"paramname\": \"dataMonthOrder\"," +
        	"\"paramvalue\": \"" + Q.FieldByName("dataMonthOrder").asString + "\"" +
      	"}," +
      	"{" +
            "\"paramname\": \"dataNewMember\"," +
        	"\"paramvalue\": \"" + Q.FieldByName("dataNewMeber").asString + "\"" +
      	"}," +
      	"{" +
        	"\"paramname\": \"dataOnceConsume\"," +
        	"\"paramvalue\": \"" + Q.FieldByName("dataOnceConsume").asString + "\"" +
      	"}" +
    	"]" +
     "}" +
  "}";
  UGMM.SendWsMsgByStr(msg);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//PasScript
  msg = '{' +
    '"username": "demo",' +              					 		//WebSocket消息发送的目标用户
    '"action": "callback",' +            					 		//WebSocket消息告知IsoBean执行的动作
    '"tag": "0",' + 
    '"data": {' +
        '"callbackcomponent": "wb-das-0001_dashboard-demo1",' +   	//执行动作的目标组件名称
        '"callbackeventname": "update",' +  			//执行触发OnAjaxEvent事件的 eventname(事件名称)
    	'"callbackparams": [' +             						 //传输的键值,可以有一对或者多对
      	'{' +
            '"paramname": "type",' +
        	'"paramvalue": "header"' +
      	'},' +
      	'{' +
        	'"paramname": "dataMonthOrder",' +
        	'"paramvalue": "' + Q.FieldByName('dataMonthOrder').asString + '"' +
      	'},' +
      	'{' +
            '"paramname": "dataNewMember",' +
        	'"paramvalue": "' + Q.FieldByName('dataNewMeber').asString + '"' +
      	'},' +
      	'{' +
        	'"paramname": "dataOnceConsume",' +
        	'"paramvalue": "' + Q.FieldByName('dataOnceConsume').asString + '"' +
      	'}' +
    	']' +
     '}' +
  '}';
  UGMM.SendWsMsgByStr(msg);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Make sure to add code blocks to your code group
# 1.44. URLDownloadToFile
Function URLDownloadToFile(AUrl: string;AFileName: string):Integer;
说明: 根据URL下载文件到指定目录 返回值: Integer类型
- URLDownloadToFile 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AUrl | 指定远程文件Url地址 | 
| AFileName | 指定本地文件路径(含文件名) | 
- 示例
//JScript
   //下载文件到本地,并通过UgPDFFrame控件打开预览
   if (UGMM.URLDownloadToFile("File URL","temp\\report.pdf") == 0) 
     UgPDFFrame01.PdfURL = "temp\\report.pdf";
2
3
4
//PasScript
   //下载文件到本地,并通过UgPDFFrame控件打开预览
   if UGMM.URLDownloadToFile('File URL','temp\report.pdf') =0 then 
     UgPDFFrame01.PdfURL := 'temp\report.pdf';
2
3
4
// Make sure to add code blocks to your code group
# 1.45. VerifyRunFramePermType
Function  VerifyRunFramePermType(ARunFarme:TComponent;APermName:String;ACreateUser:String):Boolean;
说明: 验证运行模块类型权限 返回值: Boolean类型
- VerifyRunFramePermType 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ARunFarme | 指定窗体类 | 
| APermName | 指定权限名称 | 
| ACreateUser | 指定操作用户 | 
- 示例
//JScript
   if (UGMM.VerifyRunFramePermType(TUgWebRunFrame(Self),"New","admin")
   {
     ShowMessage("permissions available");
   }
2
3
4
5
//PasScript
begin
   if UGMM.VerifyRunFramePermType(TUgWebRunFrame(Self),'New','admin') Then
   Begin
     ShowMessage('permissions available');
   end;
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
# 1.46. VerifyPermGuid
Function  VerifyPermGuid(AGuid:String):Boolean;
说明: 以权限地址获取用户是否有权限 返回值: Boolean类型
- VerifyPermGuid 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AGuid | 指定权限唯一地址Guid | 
- 示例
//JScript
   if (UGMM.VerifyPermGuid("Guid")
   {
     ShowMessage("permissions available");
   }
2
3
4
5
//PasScript
begin
   if UGMM.VerifyPermGuid('Guid') Then
   Begin
     ShowMessage('permissions available');
   end;
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
# 2. UGSM类函数
UGSM类程序在程序中调用时,必须以UGSM.开头。
# 3. UGCM类函数
UGCM类程序在程序中调用时,必须以UGCM.开头。
# 3.1. AmountToChinese
function AmountToChinese(ls: Variant): string;
说明: 金额转大写(中文) 返回值: string类型
- AmountToChinese 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| ls | 指定一个金额(浮点数) | 
- 示例
//JScript
  var Amount;
  Amount = 123456.78;
  Showmessage(UGCM.AmountToChinese(Amount));
2
3
4
//PasScript
Var 
  Amount:double;
begin
  Amount := 123456.78;
  Showmessage(UGCM.AmountToChinese(Amount));
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
运行结果 :壹拾贰万叁仟肆佰伍拾陆元柒角捌分
# 3.2. GetFileStreamFileName
function GetFileStreamFileName(AFileStream: TFileStream): string;
说明: 根据文件流获取文件名(含路径) 返回值: string类型
- GetFileStreamFileName 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AFileStream | 指定文件流 | 
- 示例
//JScript
function UgFileUploadButton01OnCompleted(sender,astream){
    var DestName,DestFolder;
    DestFolder=UGSM.StartPath+"temp\\";
    DestName=DestFolder+UgFileUploadButton01.FileName;
    //上传文件
    CopyFile(UGCM.GetFileStreamFileName(AStream), DestName, False);
    ugedit04.Text = DestName;
}
2
3
4
5
6
7
8
9
//PasScript
procedure UgFileUploadButton01OnCompleted(sender: tobject;astream: tfilestream);
var
  DestName : string;
  DestFolder : string;
begin
    //远程文件路径
    DestFolder:=UGSM.StartPath+'temp\';
    DestName:=DestFolder+UgFileUploadButton01.FileName;
    //上传文件
    CopyFile(UGCM.GetFileStreamFileName(AStream), DestName, False);
    ugedit04.Text := DestName;
end;
2
3
4
5
6
7
8
9
10
11
12
13
// Make sure to add code blocks to your code group
# 3.3. Gettamptime
function Gettamptime(vtime: string; vlen: Integer): string;
说明: 获取时间戳 返回值: string类型
- Gettamptime 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| vtime | 指定一个时间 | 
| vlen | 指定时间戳长度 | 
- 示例
//JScript
  var Time;
  Time = "2020-12-01 12:12:12";
  Showmessage(UGCM.Gettamptime(Time,13));
2
3
4
//PasScript
Var 
  Time:String;
begin
  Time := '2020-12-01 12:12:12';
  Showmessage(UGCM.Gettamptime(Time,13));
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
运行结果 :1606795932000
# 3.4. GettampTotime
function GettampTotime(vtamp: string): string; 
说明: 根据时间戳转时间 返回值: string类型
- GettampTotime 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| vtamp | 指定一个时间戳 | 
- 示例
//JScript
  var Timetamp;
  Timetamp = "1606795932000";
  Showmessage(UGCM.GettampTotime(Timetamp));
2
3
4
//PasScript
Var 
  Timetamp:String;
begin
  Timetamp := '1606795932000';
  Showmessage(UGCM.GettampTotime(Timetamp));
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
运行结果 :2020-12-01 12:12:12.000
# 3.5. HexStrToStream
function HexStrToStream(AHexStr: string; AStream: TStream): Boolean;
说明: 16进制转流 返回值: Boolean类型
- HexStrToStream 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AHexStr | 指定16进制字符串 | 
| AStream | 指定流对象 | 
# 3.6. HexToInt
function HexToInt(const AHex: string): Integer;
说明: 16进制转整型 返回值: Integer类型
- HexToInt 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AHex | 指定16进制字符 | 
- 示例
//JScript
  var Hex;
  Hex = "0A";
  Showmessage(IntToStr(UGCM.HexToInt(Hex)));
2
3
4
//PasScript
Var 
  Hex:String;
begin
  Hex := '0A';
  Showmessage(IntToStr(UGCM.HexToInt(Hex)));
end;
2
3
4
5
6
7
// Make sure to add code blocks to your code group
运行结果:10
# 3.7. HexToBytes
function HexToBytes(AHex: string): TBytes;
说明: 16进制字符串转字节数组 返回值: TBytes类型
- HexToBytes 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AHex | 指定16进制字符串 | 
- 示例
# 3.8. RoundToCH
function RoundToCH(const AValue: Double; const ADigit: Integer): Double;
说明: 四舍五入 返回值: Double类型
- RoundToCH 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| AValue | 指定一个浮点数 | 
| ADigit | 指定小数位保留位数 | 
- 示例
//JScript
//保留一位小数
  var d;
  d=12345.56;
  Showmessage(FloatToStr(UGCM.RoundToCH(d,1)));
2
3
4
5
//PasScript
//保留一位小数
Var 
  d:double;
begin
  d:=12345.56;
  Showmessage(FloatToStr(UGCM.RoundToCH(d,1)));
end;
2
3
4
5
6
7
8
// Make sure to add code blocks to your code group
运行结果:12345.6
# 3.9. NetHttpGet
 function NetHttpGet(const Qurl: string; const QSource:string = ''): string;
说明: HTTP GET方法,通过向请求地址发送GET 请求获取返回信息。 返回值: String类型,
- NetHttpGet 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| Qurl | 指定一个地址 | 
| QSource | 请求体的内容,默认请保持为空状态 | 
- 示例
//JScript
//ZoneMinder API用于获取监视器列表
//curl http://server/zm/api/monitors.json
  s = UGCM.NetHttpGet(edtURL.Text + "/monitors.json?token=" + token,"");
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ": " + s);
2
3
4
5
6
//PasScript
//ZoneMinder API用于获取监视器列表
//curl http://server/zm/api/monitors.json
begin
  s := UGCM.NetHttpGet(edtURL.Text + '/monitors.json?token=' + token,'');
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ': ' + s);
end;
2
3
4
5
6
7
8
// Make sure to add code blocks to your code group
# 3.10. NetHttpPost
function NetHttpPost(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''): string;
说明: HTTP POST方法,通过向请求地址发送POST请求获取返回信息。 返回值: String类型,
- NetHttpPost 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| Qurl | 指定一个地址 | 
| QSource | 请求体的内容 | 
| QResponseContent | 请求响应的内容,默认保持为空的状态 | 
| QContentType | 请求体声明的内容类型,常用的有 application/json、application/xml、application/x-www-form-urlencoded等 | 
- 示例
//JScript
//ZoneMinder 使用API来修改监视器功能
//curl -XPOST http://server/zm/api/monitors/1.json -d "Monitor[Function]=Modect&Monitor[Enabled]=1"
  var postString,s;
  postString = "Monitor[Function]=" + cbFunction.Items.Strings[cbFunction.ItemIndex] + "&Monitor[Enabled]=1";
  s = UGCM.NetHttpPost(edtURL.Text + "/monitors/1.json?token=" + token,postString,"","application/x-www-form-urlencoded");
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ": " + s);
2
3
4
5
6
7
8
//PasScript
//ZoneMinder 使用API来修改监视器功能
//curl -XPOST http://server/zm/api/monitors/1.json -d "Monitor[Function]=Modect&Monitor[Enabled]=1"
Var
  s: string;
  postString: string;
begin
    postString := 'Monitor[Function]=' + cbFunction.Items.Strings[cbFunction.ItemIndex] + '&Monitor[Enabled]=1';
    s := UGCM.NetHttpPost(edtURL.Text + '/monitors/1.json?token=' + token,postString,'','application/x-www-form-urlencoded');
    mmLog.Lines.Clear;
    mmLog.Lines.Add(DateTimeToStr(now()) + ': ' + s);
end;
2
3
4
5
6
7
8
9
10
11
12
// Make sure to add code blocks to your code group
# 3.11. NetHttpPut
function NetHttpPut(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''): string;
说明: HTTP PUT方法,通过向请求地址发送PUT请求获取返回信息。 返回值: String类型。
- NetHttpPut 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| Qurl | 指定一个地址 | 
| QSource | 请求体的内容 | 
| QResponseContent | 请求响应的内容,默认保持为空的状态 | 
| QContentType | 请求体声明的内容类型,常用的有 application/json、application/xml、application/x-www-form-urlencoded等 | 
- 示例
//JScript
//ZoneMinder使用API来编辑监视器
//此命令会将监视器 1 的“名称”字段更改为“test1”
//curl -XPUT http://server/zm/api/monitors/1.json -d "Monitor[Name]=test1"
//修改检视器名称
  var s;
  s = UGCM.NetHttpPut(edtURL.Text + "/monitors/1.json?token=" + token,"Monitor[Name]=" + 
  edtMonitorName.Text,"","application/x-www-form-urlencoded");
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ": " + s);
2
3
4
5
6
7
8
9
10
//PasScript
//ZoneMinder使用API来编辑监视器
//此命令会将监视器 1 的“名称”字段更改为“test1”
//curl -XPUT http://server/zm/api/monitors/1.json -d "Monitor[Name]=test1"
//修改检视器名称
Var
  s: string;
begin
  s := UGCM.NetHttpPut(edtURL.Text + '/monitors/1.json?token=' + token,'Monitor[Name]=' + 
  edtMonitorName.Text,'','application/x-www-form-urlencoded');
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ': ' + s);
end;
2
3
4
5
6
7
8
9
10
11
12
13
// Make sure to add code blocks to your code group
# 3.12. NetHttpDelete
function NetHttpDelete(const Qurl: string; const QSource:string = ''): string;
说明: HTTP DELETE方法,通过向请求地址发送DELETE请求获取返回信息。 返回值: String类型。
- NetHttpDelete 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QUrl | 指定一个地址 | 
| QSource | 请求体的内容,默认请保持为空状态 | 
- 示例
//JScript
//ZoneMinder使用API来删除监视器
//curl -XDELETE http://server/zm/api/monitors/1.json
//删除监视器
  var s;
  s = UGCM.NetHttpDelete(edtURL.Text + "/monitors/4.json?token=" + token,"");
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ": " + s);
2
3
4
5
6
7
8
//PasScript
//ZoneMinder使用API来删除监视器
//curl -XDELETE http://server/zm/api/monitors/1.json
//删除监视器
var
  s: string;
begin
  s := UGCM.NetHttpDelete(edtURL.Text + '/monitors/4.json?token=' + token,'');
  mmLog.Lines.Clear;
  mmLog.Lines.Add(DateTimeToStr(now()) + ': ' + s);
end;
2
3
4
5
6
7
8
9
10
11
// Make sure to add code blocks to your code group
# 3.13. GetJSONObject
function GetJSONObject(const QJSONObject: TJSONObject; const QPath:String):TJSONObject;
说明: 获取JSON对象中指定的嵌套对象。 返回值: TJSONObject类型。
- GetJSONObject 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
- 示例
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     j =UGCM.GetJSONObject(j,"Language");
     ShowMessage(UGCM.GetJSONNumber(j,"DefaultLanguage"));
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     j :=UGCM.GetJSONObject(j,'Language');
     ShowMessage(UGCM.GetJSONNumber(j,'DefaultLanguage'));
     //上述两句程序也可改写为
     //ShowMessage(UGCM.GetJSONNumber(j,'Language.DefaultLanguage'));
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为1。
# 3.14. GetJSONArray
function GetJSONArray(const QJSONObject: TJSONObject; const QPath:String):TJSONArray;
说明: 获取JSON对象中指定的数组列。 返回值: TJSONArray类型。
- GetJSONArray 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
- 示例
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1,
        "options":[
            {"options":1},
            {"options":2}
        ]
    }
}
2
3
4
5
6
7
8
9
10
//JScript
  var J,A,s;
  J= new TJSONObject();
  A= new TJSONArray();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1,\"options\":[{\"options\":1},{\"options\":2}]}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     A = UGCM.GetJSONArray(j,"Language.options");
     J = TJSONObject(A.Items[1]);
     ShowMessage(UGCM.GetJSONNumber(j,"options"));
  }
  Finally{
    j.Free;
    A.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//PasScript
Var 
  J:TJSONObject;
  A:TJSONArray;
  s: String;
begin
  J:=TJSONObject.Create;
  A:= TJSONArray.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1,"options":[{"options":1},{"options":2}]}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     A := UGCM.GetJSONArray(j,'Language.options');
     J := TJSONObject(A.Items[1]);
     ShowMessage(UGCM.GetJSONNumber(j,'options'));
  Finally
    j.Free;
    A.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为2。
# 3.15. GetJSONString
function GetJSONString(const QJSONObject: TJSONObject; const QPath:String):String;
说明: 获取JSON对象中指定键值的字符串。 返回值: String类型。
- GetJSONString 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     ShowMessage(UGCM.GetJSONString(j,"status"));
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     ShowMessage(UGCM.GetJSONString(j,'status'));
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为OK。
# 3.16. GetJSONNumber
function GetJSONNumber(const QJSONObject: TJSONObject; const QPath:String):String;
说明: 获取JSON对象中指定的键值中的数值。 返回值: String类型。
- GetJSONNumber 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
- 示例
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     j =UGCM.GetJSONObject(j,"Language");
     ShowMessage(UGCM.GetJSONNumber(j,"DefaultLanguage"));
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     j :=UGCM.GetJSONObject(j,'Language');
     ShowMessage(UGCM.GetJSONNumber(j,'DefaultLanguage'));
     //上述两句程序也可改写为
     //ShowMessage(UGCM.GetJSONNumber(j,'Language.DefaultLanguage'));
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为1。
# 3.17. GetJSONInteger
function GetJSONInteger(const QJSONObject: TJSONObject; const QPath:String):Integer;
说明: 获取JSON对象中指定的键值中的整数数值,并以整数的形式返回。 返回值: Integer类型。
- GetJSONInteger 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
- 示例
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     i = UGCM.GetJSONInteger(j,"Language.DefaultLanguage");
     ShowMessage(IntToStr(i));
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
//PasScript
Var 
  J:TJSONObject;
  s: String;
  i: Integer;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     i := UGCM.GetJSONInteger(j,'Language.DefaultLanguage');
     ShowMessage(IntToStr(i));
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为1。
# 3.18. GetJSONFloat
function GetJSONFloat(const QJSONObject: TJSONObject; const QPath:String):Double;
说明: 获取JSON对象中指定的键值中的浮点数数值,并以浮点数的形式返回。 返回值: Double类型。
- GetJSONFloat 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
- 示例
假设需要对以下JSON进行解析。
{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1.1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": \"OK\",\"Language\":{\"DefaultLanguage\": 1.1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     i = UGCM.GetJSONFloat(j,"Language.DefaultLanguage");
     ShowMessage(FloatToStr(i));
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
//PasScript
Var 
  J:TJSONObject;
  s: String;
  i: Double;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1.1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     i := UGCM.GetJSONFloat(j,'Language.DefaultLanguage');
     ShowMessage(FloatToStr(i));
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
以上程序运行后获取到的值为1.1。
# 3.19. GetJSONBool
function GetJSONBool(const QJSONObject: TJSONObject; const QPath:String):Boolean;
说明: 获取JSON对象中指定的键值中的布尔数值,并以布尔值的形式返回。 返回值: Boolean类型。
- GetJSONBool 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
假设需要对以下JSON进行解析。
{
    "status": true,
    "Language":{
        "DefaultLanguage": 1
    }
}
2
3
4
5
6
//JScript
  var J,s;
  J= new TJSONObject();
  s= "{\"status\": true,\"Language\":{\"DefaultLanguage\": 1.1}}";
  Try{
     j = TJSONObject(j.ParseJSONValue(s,false,false));
     if (UGCM.GetJSONBool(j,'status'))
       ShowMessage('{"status": true}');
  }
  Finally{
    j.Free;
  }
2
3
4
5
6
7
8
9
10
11
12
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": true,"Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(j.ParseJSONValue(s,false,false));
     if (UGCM.GetJSONBool(j,'status')) then
       ShowMessage('{"status": true}');
  Finally
    j.Free;
  end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Make sure to add code blocks to your code group
  以上程序运行后获取到的值为{"status": true}。
# 3.20. GetJSONValue
function GetJSONValue(const QJSONObject: TJSONValue; const QPath:String):TJSONValue;
说明: 获取JSON对象中指定的键值中的值。 返回值: TJSONValue类型。
- GetJSONBool 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
# 3.21. ParseJSONValue
function ParseJSONValue(QJson: string): TJSONValue;
说明: 获取字符串形式的JSON对象中指定的键值中的值。 返回值: TJSONValue类型。
- GetJSONBool 函数语法中各部分说明
| 部分 | 说明 | 
|---|---|
| QJSONObject | 要进行获取对象操作的JSON对象名称 | 
| QPath | 对象在JSON中的路径名称,路径的名称之间以"."作为分隔标志 | 
