愛招飛幫助手冊 愛招飛幫助手冊
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • Smart幫助主頁
  • 學習手冊

    • 基本入門

    • 功能介紹

    • 控制元件說明

    • 功能用法

    • 專用模板

    • 開發流程

    • 函式程式

      • 系統函式
      • 系統程式
      • 自定函式
        • 1. DM類函式
          • 1.1. CheckFieldEmpty
          • 1.2. DataSetIsEdit
          • 1.3. ExecProcedureFast
          • 1.4. ExecProcedureRStr
          • 1.5. OpenData
          • 1.6. OpenDatas
          • 1.7. QueryValue
          • 1.8. SaveData
          • 1.9. SaveDatas
          • 1.10. GetBillNo
          • 1.11. GetGUID
          • 1.12. GetNodeID
          • 1.13. GetNewID
          • 1.14. GetServerDate
          • 1.15. GetServerDateTime
          • 1.16. GetDBConnection
        • 2. PaxFunc類函式
          • 2.1. AddMarker
          • 2.2. Base64Get
          • 2.3. BIG2cn
          • 2.4. Cn2Big
          • 2.5. CreateStringStream
          • 2.6. DigitToEn
          • 2.7. GetBarcode
          • 2.8. GetChinaMoney
          • 2.9. GetControlsImage
          • 2.10. GetFirstDayofMonth
          • 2.11. GetHostIP
          • 2.12. GetHostName
          • 2.13. GetLastDayofMonth
          • 2.14. GetMacAddress
          • 2.15. GetPropValue
          • 2.16. GetNumber
          • 2.17. GetJSONObject
          • 2.18. GetJSONArray
          • 2.19. GetJSONString
          • 2.20. GetJSONNumber
          • 2.21. GetJSONInteger
          • 2.22. GetJSONFloat
          • 2.23. GetJSONBool
          • 2.24. GetJSONValue
          • 2.25. JSONArray_AddJSONObject
          • 2.26. JSONObject_AddJSONArray
          • 2.27. JSONParse
          • 2.28. ParseJSONValue
          • 2.29. InputNumber
          • 2.30. InputNumberR
          • 2.31. InputNumberStr
          • 2.32. MACToStr
          • 2.33. NetHttpDelete
          • 2.34. NetHttpGet
          • 2.35. NetHttpPut
          • 2.36. NetHttpPost
          • 2.37. NextMonth
          • 2.38. OpenForm
          • 2.39. ParseJSONObject
          • 2.40. RoundToCH
          • 2.41. SendArticleMessage
          • 2.42. SendCustomMessage
          • 2.43. SendEmail
          • 2.44. SendTemplateMessage
          • 2.45. SendWechatMsg
          • 2.46. ShowHandWrite
          • 2.47. StreamToBase64
          • 2.48. UrlDecode
          • 2.49. UrlEncode
          • 2.50. YesNoMsg
          • 2.51. ToJSONObjectString
          • 2.52. ToJSONArrayString
          • 2.53. ToJSONObject
          • 2.54. ToJSONArray
          • 2.55. SaveStructure
          • 2.56. ValidateJSONObject
          • 2.57. ValidateJSONString
        • 3. IOT類函式
          • 3.1. BTACreateServerSocket
          • 3.2. BTDCreateClientSocket
          • 3.3. BTMConnectionState
          • 3.4. BTMCurrent
          • 3.5. BTSKSendData
          • 3.6. BTSKReadData
          • 3.7. BTSKReceiveData
          • 3.8. BTSLGetServicesCount
          • 3.9. BTSLServicesName
          • 3.10. BTSLServicesUUID
          • 3.11. BTSSAccept
          • 3.12. ComReadAnsiString
          • 3.13. ComReadString
          • 3.14. GetBluetoothDevice
          • 3.15. IdTCPClientSendCmd
          • 3.16. ModbusTCPReadCoils
          • 3.17. ModbusTCPReadHoldingRegisters
          • 3.18. ModbusTCPWriteCoils
          • 3.19. ModbusTCPWriteRegisters
        • 4. BaseFrom基類函式
          • 4.1. GetData
      • 自定程式
  • 開發手冊

目录

自定函式

# Smart 自定函式

# 1. DM類函式


# 1.1. CheckFieldEmpty

function CheckFieldEmpty(QField: TField): Boolean;
1

說明: 判斷欄位是否為空。 返回值: 布爾Boolean型別。

  • CheckFieldEmpty函式語法中各部分說明
部分 說明
QDataSet 數據集對像
  • 示例
Begin
	If DM.CheckFieldEmpty (FThis.dts0.FieldByName('FBiller')) then
Begin
	Showmessage('數據集欄位FBiller 內容為空。');
End;
end;
1
2
3
4
5
6

# 1.2. DataSetIsEdit

function DataSetIsEdit(const QDataSet: TRFDataSet): Boolean;
1

說明: 判斷數據集是否處理編輯狀態。 返回值: 布爾Boolean型別。

  • DataSetIsEdit函式語法中各部分說明
部分 說明
QDataSet 數據集對像
  • 示例
Begin
	If DM.DataSetIsEdit(FThis.dts0) then
Begin
	Showmessage('數據集dts0處理編輯狀態。');
End;
end;
1
2
3
4
5
6

# 1.3. ExecProcedureFast

function ExecProcedureFast(const QstoreName: string; QParams: String): Boolean;
1

說明: 執行預存程序。 返回值: 布爾Boolean型別。

  • ExecProcedureFast函式語法中各部分說明
部分 說明
QstoreName 預存程序名稱
QParams 預存程序參數
  • 示例
var
  tempVar: String;
begin
  //通過提示對話方塊詢問使用者
  if not PaxFunc.YesNoMsg ('提示','確定刪除資料嗎?') then Abort();
//預存程序參數賦值
tempVar:='10001,Delete,,';
//執行預存程序
If DM.ExecProcedureFast ('sp_Basic_Item',tempVar) then 
Begin
  Msg('執行成功!')
End;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13

# 1.4. ExecProcedureRStr

function ExecProcedureRStr(const QstoreName: string; QParams: String): string;
1

說明: 執行預存程序。 返回值: 字串Srtring型別。

  • ExecProcedureRStr函式語法中各部分說明
部分 說明
QstoreName 預存程序名稱
QParams 預存程序參數
  • 示例
var
  tempVar:String;
  vResult:String;
begin
  //通過提示對話方塊詢問使用者
  if not PaxFunc.YesNoMsg ('提示','確定刪除資料嗎?') then Abort();
//預存程序參數賦值
tempVar:='10001,Delete,,';
//執行預存程序
vResult := DM.ExecProcedureRStr('sp_Basic_Item',tempVar);
if vResult <> '' then
  begin
    //顯示返回值內容
	Showmessage(vResult);
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 1.5. OpenData

function OpenData(QDataSet: TRFDataSet): Boolean;
1

說明: 打開數據集。 返回值: 布爾Boolean型別。

  • OpenData函式語法中各部分說明
部分 說明
QDataSet 數據集對像
  • 示例
var
 vDataSet:TRFDataSet;
begin
    //建立數據集對像
DM.CreateDataSet(vDataSet);
Try
  //對數據集SQL賦值
vDataSet.SQL.Text := 'Select * from Baisc_Whs';
//打開數據集,以下二種方法都可行
//打開方式1
vDataSet.Open;
//打開方式2
DM.OpenData(vDataSet);
If vDataSet.RecordCount > 0 then
Begin
	Showmessage('數據集不為空!');
End;
Finally
  vDataSet.Free;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 1.6. OpenDatas

function OpenDatas(QDataSetList: TList<TRFDataSet>): Boolean;
1

說明: 批次打開數據集。 返回值: 布爾Boolean型別。

  • OpenDatas函式語法中各部分說明
部分 說明
QDataSetList 數據集對像
  • 示例
指令碼中暫不支援TList<>對象。
1

# 1.7. QueryValue

function QueryValue(const SQLStr: string; SQLParams: string): Variant;
1

說明: 執行SQL獲取返回值。 返回值: 變體Variant型別。

  • QueryValue函式語法中各部分說明
部分 說明
SQLStr SQL語句
SQLParams SQL參數
  • 示例

# 1.8. SaveData

function SaveData(QDataSet: TRFDataSet): Boolean;
1

說明: 數據集提交。 返回值: 布爾Boolean型別。

  • SaveData函式語法中各部分說明
部分 說明
QDataSet 數據集對像
  • 示例
var
    vDataSet: TRFDataSet;
begin
    //建立數據集對像
    DM.CreateDataSet(vDataSet ,nil);
Try
    //對數據集SQL賦值
    vDataSet.SQL.Text := 'Select Top 0 * from Baisc_Whs';
    //打開數據集
    vDataSet.Open;
    //新增一條數據
    vDataSet.Append;
    vDataSet.FieldByName('FInterID').asInteger := DM.GetNodeID;
    vDataSet.FieldByName('FWhsCode').asString := '0101';
    vDataSet.FieldByName('FWhsName').asString := '白坯倉庫';
    vDataSet.Post;
    If DM.SaveData(vDataSet) then
    Begin
	    Showmessage('數據提交成功!');
    End;
Finally
    vDataSet.Free;
End;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 1.9. SaveDatas

function SaveDatas(QDataSetList: TList<TRFDataSet>): Boolean;
1

說明: 批次提交數據集。 返回值: 布爾Boolean型別。

  • SaveDatas函式語法中各部分說明
部分 說明
QDataSetList 數據集對像
  • 示例
指令碼中暫不支援TList<>對象。
1

# 1.10. GetBillNo

function GetBillNo(QBillID: string; QDate: TDateTime; QPreview: Boolean): string;
1

說明: 獲取單據流水號。 返回值: 字元String型別。

  • GetBillNo函式語法中各部分說明
部分 說明
QBillID 單據流水號規則編號
QDate 日期
QPreview 是否預覽模式
  • 示例
//數據集dts1新增記錄時,產生流水號
// 參數QPreview為true時,流水號產生只是預覽模式,還未正式產生
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
   FThis.dts1.Edit;
   FThis.dts1FBatchNo.AsString := DBFUN.GetBillNo ('17020004',Now(),false);
end;
1
2
3
4
5
6
7

# 1.11. GetGUID

function GetGUID: String;
1

說明: 獲取唯一ID。 返回值: 字元String型別。

  • 示例
  ShowMessage(DM.GetGUID);
1

# 1.12. GetNodeID

function GetNodeID: Integer;
1

說明: 獲取唯一ID **返回值: ** 整型Integer型別。

  • 示例
//數據集dts1新增記錄時,產生唯一ID
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
   FThis.dts1.Edit;
FThis.dts1FInterID.AsInteger := DM.GetNodeID;
end;
1
2
3
4
5
6

# 1.13. GetNewID

function GetNewID:String;
1

說明: 獲取64位唯一ID 雪花演算法 返回值: 字元String型別。

  • 示例
//數據集dts1新增記錄時,產生唯一ID
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
   FThis.dts1.Edit;
FThis.dts1FInterID.AsString := DM.GetNewID;
end;
1
2
3
4
5
6

# 1.14. GetServerDate

function GetServerDate:String;
1

說明: 獲取伺服器日期。 返回值: 字元String型別。

  • 示例
//數據集dts1新增記錄時,獲取伺服器日期
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1FDate.AsString := DM.GetServerDate;
end;
1
2
3
4
5

# 1.15. GetServerDateTime

function GetServerDateTime:String;
1

說明: 獲取伺服器日期時間。 返回值: 字元String型別。

  • 示例
//數據集dts1新增記錄時,獲取伺服器日期時間
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1FCeateDateTime.AsString := DM.GetServerDateTime;
end;
1
2
3
4
5

# 1.16. GetDBConnection

function: GetDBConnection(const ADefName: UnicodeString): TFDConnection; 
1

說明: 獲取資料庫連線設定。 返回值: TFDConnection 型別,可用於 TFDQuery 的連線。

  • GetDBConnection函式語法中各部分說明
部分 說明
ADefName 資料庫連線設定的名稱
  • 示例
  FThis.FDQUery1.Connection := DM.GetDBConnection('Smart');
  FThis.FDQuery1.SQL.Text := 'SELECT * FROM Table_Test';
  FThis.FDQuery1.Open;
1
2
3

# 2. PaxFunc類函式

  該章節中的函式需以PaxFunc.開頭。

# 2.1. AddMarker

function AddMarker(AMapView:TVCLCCAMapView):TCCAMapMarker;
1

說明: 增加一個地圖示記 返回值: 地圖示記TCCAMapMarker對像

  • AddMarker函式語法中各部分說明
部分 說明
AMapView 高德地圖控制元件
  • 示例
procedure TMyHandler.VCLCCAMAPVIEW1MAPCLICKEVENT(ASender: TObject; APos: TCCLngLat);
var
 vTCCAMapMarker:TCCAMapMarker;
begin
  //點選地圖時的經緯座標
  FPos:=APos;   
  //顯示經緯度到標籤上
  FThis.lbJW.Caption := FloatToStr(APos.Longitude)+','+ FloatToStr(APos.Latitude);  
  FThis.TagString := '';
  //獲取經緯度的地址
  paxfunc.GetMarkerAddress(FThis.VCLCCAMapView1,APos,FThis);   
  //清除地圖示記
  FThis.VCLCCAMapView1.Markers.Clear;
  //增加一個標記到地圖上
  vTCCAMapMarker := paxfunc.AddMarker(FThis.VCLCCAMapView1); 
    if FThis.VCLCCAMapView1.MapLoadCompleted then
	begin  
	  with vTCCAMapMarker do
	  begin
            //標記地圖資訊
		Title := FThis.TagString;
		Position.Longitude := APos.Longitude;
		Position.Latitude := APos.Latitude;
		// 設定了Content屬性Icon屬性失效。要自定義豐富的標記就用Content屬性吧
		Content:='<div>';
		Content:=Content+'<image src="http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png"></image>';
	   //Content:=Content+'<span style="white-space: nowrap;border:1px solid #fff;background-color:#ff0000;font-size: 12px;color:white;  padding: 4px 10px;">'+FThis.TagString+'</span>';
		// 圖片19   x   31   pixels
		Content:=Content+'</div>'; // 必須有根div元素 不然縮放時圖示位置不會更新
            // 繪製
		draw;
	  end; 
    end;  
1
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
32
33

# 2.2. Base64Get

function  Base64Get(FileName:String):String;
1

說明: 檔案轉Base64 返回值: String支付型別

  • Base64Get函式語法中各部分說明
部分 說明
FileName 檔案路徑包含檔名稱
  • 示例

# 2.3. BIG2cn

function BIG2cn(bigStr: string): string;
1

說明: 繁體轉簡體 返回值: 字元string型別

  • BIG2cn函式語法中各部分說明
部分 說明
bigStr 指定繁體內容字串
  • 示例
var
 s:String;
Begin 
   s := PaxFunc.BIG2cn('我是中國人!我自豪!我驕傲!');
End;
1
2
3
4
5
  • 運行結果: 我是中國人!我自豪!我驕傲!

# 2.4. Cn2Big

function Cn2Big(CnStr: string): string;
1

說明: 簡體轉繁體 返回值: 字元string型別

  • Cn2Big函式語法中各部分說明
部分 說明
CnStr 指定簡體內容字串
  • 示例
var
 s:String;
Begin 
   s := PaxFunc.Cn2Big('我是中國人!我自豪!我驕傲!');
End;
1
2
3
4
5
  • 運行結果: 我是中國人!我自豪!我驕傲!

# 2.5. CreateStringStream

function CreateStringStream(Encoding:String='UTF8'):TStringStream;
1

說明: 指定編碼型別建立字串流 返回值: TStringStream 字串流

  • CreateStringStream函式語法中各部分說明
部分 說明
Encoding 編碼型別
  • 示例
procedure TMyHandler.IdHTTPServer1CommandGet;
var
  aRequestContent: string;
  reqstream:TStringStream;
  APathInfo :String;
begin
    AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin:*');
    AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Headers:*');
    AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Method:*');
    AResponseInfo.ContentType := 'application/json;charset=utf-8'; //解決 AResponseInfo 返回中文亂碼問題

  APathInfo := ARequestInfo.Document;
  if ARequestInfo.Command.ToLower = ('POST').ToLower then
  begin
    if APathInfo = '/api/dvrs' then
    begin
      if (ARequestInfo.PostStream <> nil) and (ARequestInfo.PostStream.Size > 0) then
      begin
        ARequestInfo.PostStream.Position := 0;
        //建立UTF8編碼的字串流
        reqstream:=paxfunc.CreateStringStream('UTF8');
        try
         ARequestInfo.PostStream.Position := 0;
         reqstream.LoadFromStream(ARequestInfo.PostStream);
         aRequestContent := reqstream.DataString;
         FThis.Memo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + '/api/dvrs->' + aRequestContent);
        finally
          reqstream.Free;
        end;

       AResponseInfo.ContentText := aRequestContent; //成功 響應201
       AResponseInfo.WriteContent;
      end;
    end;
  end;
end;
1
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
32
33
34
35
36

# 2.6. DigitToEn

function DigitToEn(strDigits: String; intRMB: Boolean): String;
1

說明: 轉換成英文金額 返回值: 字元string型別

  • DigitToEn函式語法中各部分說明
部分 說明
strDigits 數字字串
intRMB 是否RMB
  • 示例
var
 s:String;
Begin 
   s := DigitToEn('10058.5',false);
End;
1
2
3
4
5
  • 運行結果: TEN THOUSAND FIFTY-EIGHT DOLLARS AND FIVE CENTS ONLY

# 2.7. GetBarcode

function GetBarcode(Graphic: TGraphic): string;
1

說明: 獲取圖片中的條碼內容 返回值: string字串型別

  • GetBarcode函式語法中各部分說明
部分 說明
Graphic 圖片中的圖形對像
  • 示例
var
 v:string;
begin
  v:=paxfunc.GetBarcode(FThis.image1.Picture.Graphic);
  FThis.memo1.Lines.Add(v);
end;
1
2
3
4
5
6

# 2.8. GetChinaMoney

function GetChinaMoney(small: Variant): string;
1

說明: 將數字金額轉成中文大寫金額 返回值: 字元string型別

  • GetChinaMoney函式語法中各部分說明
部分 說明
small 數字金額
  • 示例
var
 s:String;
Begin
   s := PaxFunc.GetChinaMoney('10058.56');
End;
1
2
3
4
5
  • 運行結果: 壹萬零仟零佰伍拾捌元伍角陸分

# 2.9. GetControlsImage

function GetControlsImage(ACtrl: TWinControl;AFile:string=''): TBitmap;
1

說明: 擷取目前運行界面存為圖片檔案 返回值: TBitmap型別

  • GetControlsImage函式語法中各部分說明
部分 說明
ACtrl 需要截圖的窗體
AFile 輸出檔名稱帶路徑
  • 示例
Begin
	PaxFunc.GetControlsImage(FThis,'c:\123.bmp');
end;
1
2
3

# 2.10. GetFirstDayofMonth

function GetFirstDayofMonth(const DT: TDateTime): TDateTime;
1

說明: 獲取指定日期所在月份的第一天。 返回值: 日期TDateTime型別。

  • GetFirstDayofMonth函式語法中各部分說明
部分 說明
DT 指定的一個日期型別
  • 示例
Var
vMonthFirstDay:TDateTime;
Begin
   vFirstEndDay  := PaxFunc.GetFirstDayofMonth('2019-07-10');
end;
1
2
3
4
5
  • 運行結果: 2019-07-01

# 2.11. GetHostIP

function GetHostIP: string;
1

說明: 獲取計算機IP地址 返回值: 字元String型別

  • 示例
var
 vHostIP:string;
Begin
	vHostIP:= PaxFunc.GetHostIP;
End;
1
2
3
4
5
  • 運行結果: 192.168.1.100

# 2.12. GetHostName

function GetHostName: string;
1

說明: 獲取計算機名稱 返回值: 字元string型別

  • 示例
var
 vHostName:string;
Begin
	vHostName := PaxFunc.GetHostName;
End;
1
2
3
4
5
  • 運行結果: I-PC

# 2.13. GetLastDayofMonth

function GetLastDayofMonth(const DT: TDateTime): TDateTime;
1

說明: 獲取指定日期所在月份的第后一天。 返回值: 日期TDateTime型別。

  • GetLastDayofMonth函式語法中各部分說明
部分 說明
DT 指定的一個日期型別
  • 示例
Var
vMonthEndDay:TDateTime;
Begin
   vMonthEndDay  := PaxFunc.GetFirstDayofMonth('2019-07-10');
end;
1
2
3
4
5
  • 運行結果: 2019-07-31

# 2.14. GetMacAddress

function GetMacAddress: string;
1

說明: 獲取計算機網絡卡地址 返回值: 字元String型別

  • 示例
var
 vHostMacAddress:string;
Begin
	vHostMacAddress:= GetMacAddress;
End;
1
2
3
4
5
  • 運行結果: 01:1A:1B:EF:0A:BC

# 2.15. GetPropValue

function GetPropValue(QControl:TComponent; QControlProp: string): Variant;
1

說明: 獲取控制元件屬性值 返回值: 變體Variant 型別

  • GetPropValue函式語法中各部分說明
部分 說明
QControl 需要獲取屬性的控制元件
QControlProp 控制元件屬性名稱
  • 示例
var
  vPropValue:variant;
begin
  //獲取窗體FThis.dbdts0FItemName對象的Name名稱
  vPropValue := PaxFunc.GetPropValue(FThis.dbdts0FItemName,'Name');
  Showmessage(vPropValue);
end;
1
2
3
4
5
6
7

# 2.16. GetNumber

function GetNumber(S: string): string;
1

說明: 擷取字串中的數字 返回值: 字元String型別

  • GetNumber函式語法中各部分說明
部分 說明
S 指定一個包含數字的字串
  • 示例
var
    v:string;
begin
    v:= PaxFunc.GetNumber ('12A56B.A11');
    //顯示返回的SQL內容
    Showmessage(v);
end;
1
2
3
4
5
6
7
  • 運行結果: 125611

# 2.17. GetJSONObject

function GetJSONObject(const QJSONObject: TJSONValue; const QPath:String):TJSONObject;
1

說明: 獲取JSON對像中指定的巢狀對象。 返回值: TJSONObject型別。

  • GetJSONObject 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌
  • 示例

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     j := paxfunc.GetJSONObject(j,'Language');
     ShowMessage(paxfunc.GetJSONNumber(j,'DefaultLanguage'));
     //上述兩句程式也可改寫為
     //ShowMessage(paxfunc.GetJSONNumber(j,'Language.DefaultLanguage'));
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

  以上程式運行后獲取到的值為1。

# 2.18. GetJSONArray

function GetJSONArray(const QJSONObject: TJSONValue; const QPath:String):TJSONArray;
1

說明: 獲取JSON對像中指定的陣列列。 返回值: TJSONArray型別。

  • GetJSONArray 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌
  • 示例

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1,
        "options":[
            {"options":1},
            {"options":2}
        ]
    }
}
1
2
3
4
5
6
7
8
9
10
//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(paxfunc.ParseJSONValue(s));
     A := paxfunc.GetJSONArray(j,'Language.options');
     J := TJSONObject(A.Items[1]);
     ShowMessage(paxfunc.GetJSONNumber(j,'options'));
  Finally
    j.Free;
    A.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

  以上程式運行后獲取到的值為2。

# 2.19. GetJSONString

function GetJSONString(const QJSONObject: TJSONValue; const QPath:String):String;
1

說明: 獲取JSON對像中指定鍵值的字串。 返回值: String型別。

  • GetJSONString 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     ShowMessage(paxfunc.GetJSONString(j,'status'));
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

  以上程式運行后獲取到的值為OK。

# 2.20. GetJSONNumber

function GetJSONNumber(const QJSONObject: TJSONValue; const QPath:String):String;
1

說明: 獲取JSON對像中指定的鍵值中的數值。 返回值: String型別。

  • GetJSONNumber 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌
  • 示例

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     j := paxfunc.GetJSONObject(j,'Language');
     ShowMessage(paxfunc.GetJSONNumber(j,'DefaultLanguage'));
     //上述兩句程式也可改寫為
     //ShowMessage(paxfunc.GetJSONNumber(j,'Language.DefaultLanguage'));
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

  以上程式運行后獲取到的值為1。

# 2.21. GetJSONInteger

function GetJSONInteger(const QJSONObject: TJSONValue; const QPath:String):Integer;
1

說明: 獲取JSON對像中指定的鍵值中的整數數值,並以整數的形式返回。 返回值: Integer型別。

  • GetJSONInteger 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌
  • 示例

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
  i: Integer;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     i := paxfunc.GetJSONInteger(j,'Language.DefaultLanguage');
     ShowMessage(IntToStr(i));
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

  以上程式運行后獲取到的值為1。

# 2.22. GetJSONFloat

function GetJSONFloat(const QJSONObject: TJSONValue; const QPath:String):Double;
1

說明: 獲取JSON對像中指定的鍵值中的浮點數數值,並以浮點數的形式返回。 返回值: Double型別。

  • GetJSONFloat 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌
  • 示例

  假設需要對以下JSON進行解析。

{
    "status": "OK",
    "Language":{
        "DefaultLanguage": 1.1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
  i: Double;
begin
  J:=TJSONObject.Create;
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1.1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     i := paxfunc.GetJSONFloat(j,'Language.DefaultLanguage');
     ShowMessage(FloatToStr(i));
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

  以上程式運行后獲取到的值為1.1。

# 2.23. GetJSONBool

function GetJSONBool(const QJSONObject: TJSONValue; const QPath:String):Boolean;
1

說明: 獲取JSON對像中指定的鍵值中的布爾數值,並以布林值的形式返回。 返回值: Boolean型別。

  • GetJSONBool 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌

  假設需要對以下JSON進行解析。

{
    "status": true,
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
//PasScript
Var 
  J:TJSONObject;
  s: String;
begin
  J:=TJSONObject.Create;
  s:= '{"status": true,"Language":{"DefaultLanguage": 1}}';
  Try
     j := TJSONObject(paxfunc.ParseJSONValue(s));
     if (paxfunc.GetJSONBool(j,'status')) then
       ShowMessage('{"status": true}');
  Finally
    j.Free;
  end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

  以上程式運行后獲取到的值為{"status": true}。

# 2.24. GetJSONValue

function GetJSONValue(const QJSONObject: TJSONValue; const QPath:String):TJSONValue;
1

說明: 獲取JSON對像中指定的鍵值中的值。 返回值: TJSONValue型別。

  • GetJSONBool 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌

# 2.25. JSONArray_AddJSONObject

function JSONArray_AddJSONObject(QJSONArray:TJSONArray;const QJSONObject: TJSONValue):TJSONArray;
1

說明: 在原有的JSON佇列中新增一個新的JSON對像 返回值: TJSONArray型別。

  • GetJSONBool 函式語法中各部分說明
部分 說明
QJSONArray 要進行獲取對像操作的JSON佇列名稱
QJSONObject 要新增的JSON對像名稱

  假設有以下的佇列:

[{"status":"ok"}]
1

  需要向其中新增以下的json對像:

{"status":"no"}
1
Var 
  J:TJSONValue;
  A:TJSONArray;
  s1,s2: String;
begin
  s1:= '[{"status":"ok"}]';
  s2:= '{"status":"no"}';
  A := TJSONArray(paxfunc.ParseJSONValue(s1));
  J := paxfunc.ParseJSONValue(s2);
  A := paxfunc.JSONArray_AddJSONObject(A,J);
  ShowMessage(A.ToString);
end;
1
2
3
4
5
6
7
8
9
10
11
12

  執行以上程式,輸出的結果為 [{"status","ok"},{"status":"no"}]

# 2.26. JSONObject_AddJSONArray

function JSONObject_AddJSONArray(QJSONObject: TJSONObject; const Str: string; const Val: TJSONValue):TJSONObject;
1

說明: 在原有的JSON對像中新增一個新的JSON值以獲取一個新的JSON對像 返回值: TJSONObject型別。

部分 說明
QJSONObject 要獲取的JSON對像名稱
Str 要新增的鍵名
Val 要新增的鍵值

  假設有以下的json對像:

{"status":"ok"}
1

  需要合併以下的json佇列作為子對像

[{"status":"no"}]
1
Var 
  J1:TJSONValue;
  J2:TJSONValue;
  A: TJSONValue;
  s1,s2: String;
begin
  s1:= '{"status":"ok"}';
  s2:= '[{"status":"no"}]';
  J1 := paxfunc.ParseJSONValue(s1);
  A := paxfunc.ParseJSONValue(s2);
  J2 := paxfunc.JSONObject_AddJSONArray(TJSONObject(J1),'array',A);
  ShowMessage(j2.ToString);
end;
1
2
3
4
5
6
7
8
9
10
11
12
13

  執行以上程式,輸出的結果為 [{"status","ok"},"array":[{"status":"no"}]}

# 2.27. JSONParse

function JSONParse(QType, QPath, QJson: string): string;
1

說明: 解析JSON,獲取JSON中的單元的取值。 返回值: string型別。

部分 說明
QType 要獲取的JSON對像型別 GetJSONObject,GetJSONArray,GetJSONNumber、GetJSONObject、GetJSONValue、GetJSONBool、GetJSONPair
QPath 獲取的JSON對象的路徑名稱
QJSON 要解析的JSON對像文字
  • 示例
```JSON
{
    "status": true,
    "Language":{
        "DefaultLanguage": 1
    }
}
1
2
3
4
5
6
7
//PasScript
Var 
  s: String;
begin
  s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
  ShowMessage(paxfunc.JSONParse('GetJSONString','status',s));
end;
1
2
3
4
5
6
7

# 2.28. ParseJSONValue

function ParseJSONValue(QJson: string): TJSONValue;
1

說明: 獲取字串形式的JSON對像中指定的鍵值中的值。 返回值: TJSONValue型別。

  • GetJSONBool 函式語法中各部分說明
部分 說明
QJSONObject 要進行獲取對像操作的JSON對像名稱
QPath 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌

# 2.29. InputNumber

function InputNumber(AField: TField; ACantion: string = ''): Boolean;
1

說明: 顯示數字輸入小鍵盤 返回值: 布爾Boolean型別

  • InputNumber函式語法中各部分說明
部分 說明
AField 指定數據集欄位,數值型的欄位
ACantion 小鍵盤標籤
  • 示例
Begin
   PaxFunc.InputNumber(FThis.RFDataSet1.FieldByName('FInterID'),'請輸入一個數字');
End;
1
2
3
  • 運行結果: 數字輸入小鍵盤

# 2.30. InputNumberR

function InputNumberR(var vStr: string; ACantion: string = ''): Boolean;
1

說明: 顯示字元型變數輸入小鍵盤 返回值: 布爾Boolean型別

  • 函式語法中各部分說明
部分 說明
vStr 一個字元型變數
ACantion 小鍵盤標籤
  • 示例
Var
 vStr:String;
Begin
   //帶變數
   vStr := '1234';
   PaxFunc.InputNumberR(vStr,'請輸入字串');
End;
1
2
3
4
5
6
7
  • 運行結果: 字元型變數輸入小鍵盤

# 2.31. InputNumberStr

function InputNumberStr(AField: TField; ACantion: string = ''): Boolean;
1

說明: 顯示用於資料庫字串輸入的小鍵盤 返回值: 布爾Boolean型別

  • InputNumberStr函式語法中各部分說明
部分 說明
AField 指定數據集欄位,欄位需要是字元型的
ACantion 小鍵盤標籤
  • 示例
Begin 
   //字元型欄位
   PaxFunc.InputNumberStr (FThis.dts0.FieldByName('FItemCode'),'請輸入字串');
End;
1
2
3
4
  • 運行結果: 資料庫字串輸入小鍵盤

# 2.32. MACToStr

function MACToStr(ByteArr: PByte; Len: Integer): String;
1

說明: MAC地址轉字串 返回值: 字元Srting型別

  • MACToStr函式語法中各部分說明
部分 說明
ByteArr MAC地址
Len 長度

# 2.33. NetHttpDelete

function NetHttpDelete(const Qurl: string; const QSource:string = ''): string;
1

說明 獲取Http請求(Delete方法)。 返回值 字元string型別

  • NetHttpDelete函式語法中各部分說明
部分 說明
Qurl Http URL內容
QSource Http請求體的內容

# 2.34. NetHttpGet

function NetHttpGet(Qurl: string; QSource: string = ''): string;
1

說明: 獲取Http請求 返回值: 字元string型別

  • NetHttpGet函式語法中各部分說明
部分 說明
Qurl Http URL內容
QSource Http請求體的內容
  • 示例
var
  vValue:string;
begin
  //獲取一個64位唯一ID
  vValue := PaxFunc.NetHttpGet('http://192.168.1.100:8809/system/newid','');
  Showmessage(vValue) ;
end;
1
2
3
4
5
6
7
  • 運行結果: NetHttpGet運行結果

# 2.35. NetHttpPut

function NetHttpPut(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''; const QHeaders:TStringList = nil): string;
1

說明: 提交Http請求 返回值: 字元string型別

  • NetHttpPut函式語法中各部分說明
部分 說明
Qurl Http 內容
QSource 請求體內容
QResponseContent 響應的內容的格式型別
QContentType Http請求的內容型別 4種 application/json,application/xml, multipart/form-data,application/x-www-form-urlencoded
QHeaders Http請求頭

# 2.36. NetHttpPost

function NetHttpPost(const Qurl: string; const QSource: string = ''; const QResponseContent: string = ''; const QContentType: string = ''; const QHeaders:TStringList = nil): string;
1

說明: 提交Http請求 返回值: 字元string型別

  • NetHttpPost函式語法中各部分說明
部分 說明
Qurl Http 內容
QSource 請求體內容
QResponseContent 響應的內容的格式型別
QContentType Http請求的內容型別 4種 application/json,application/xml, multipart/form-data,application/x-www-form-urlencoded
QHeaders Http請求頭
  • 示例
var
JsonObject:TJSONObject;
vJson:String;
begin
  //通過Http請求,提交數據,JSon格式
  JsonObject := TJSONObject.Create
    .AddPair('customerName', 'XX科技有限公司')
    .AddPair('documentDate', '2019-07-30 00:00:00')
    .AddPair('documentNo', 'WUR20190730001')
    .AddPair('makerPeople', '小王')
    .AddPair('makerDate', '2019-07-30 23:01:01')
    .AddPair('materialCode', '01001')
    .AddPair('materialName', '牛津布')
    .AddPair('piece', '12')
    .AddPair('quantity','122' )
    .AddPair('remark', '備註1')
    .AddPair('status', '審覈')
    .AddPair('specification', '180D')
    .AddPair('makerPeople', '小王')
    .AddPair('storehouse', 'A-12')
    .AddPair('unit', '米')
.AddPair('warehouse', '白坯倉庫');   
vJson:= '['+JsonObject.ToString+']';
PaxFunc.NetHttpPost('http://127.0.1.1/printing/tofoProdUse/add',vJson ,
'application/json','application/json',nil);
End;
1
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

# 2.37. NextMonth

Function NextMonth(ADateTime: Variant): string;
1

說明: 獲取指定日期下一個月第一天 返回值: 字元string型別

  • NextMonth函式語法中各部分說明
部分 說明
ADateTime 指定的一個變體型別
  • 示例
Var
vNextMonth:String;
Begin
   vNextMonth:= PaxFunc.NextMonth ('2019-07-10');
end;
1
2
3
4
5
  • 運行結果: 2019-08-01

# 2.38. OpenForm

function OpenForm(QFormName: string) :TBaseForm;
1

說明: 打開Smart專案中的窗體 返回值: TBaseForm窗體型別

  • OpenForm函式語法中各部分說明
部分 說明
QFormName 窗體Name名稱
  • 示例
begin
  paxfunc.OpenForm('Frm002');
end;
1
2
3

# 2.39. ParseJSONObject

function ParseJSONObject(QJsonStr:string):TJsonObject;
1

說明: 解析Json對像 返回值: TJsonObject對像型別

  • ParseJSONObject函式語法中各部分說明
部分 說明
QJsonStr Json格式字串
  • 示例
var
  v:string;
  JSONObject: TJSONObject;
  LItem: TJSONValue;
  LJPair: TJSONPair;
  LJSONArray: TJSONArray;
  StrJson: string;
  result: string;
  i: Integer;
begin
  FThis.Memo1.Lines.Add(paxfunc.urlDecode(APAYLOAD));
   
  StrJson := paxfunc.urlDecode(APAYLOAD); //假定是上面那個json
  JSONObject := paxfunc.ParseJSONObject(StrJson);
  LJSONArray := JSONObject.GetValue('data') as TJSONArray;
  FTHis.cbb_PrinterS.Items.Clear;
  
  for i := 0 to LJSONArray.size - 1 do 
  begin
    LItem := (LJSONArray.Get(i) as TJSONObject).GetValue('name'); //得到LJSONArray的值 
    FTHis.cbb_PrinterS.Items.Add(LItem.Value);
  end; 
  FTHis.cbb_PrinterS.ItemIndex := 0;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 2.40. RoundToCH

function RoundToCH(const AValue: Double; const ADigit: Integer): Double;
1

說明: 四捨五入函式 返回值: 雙精度Double型別

  • 函式語法中各部分說明
部分 說明
AValue 指定一個Double型別的數值
ADigit 指定一個小數點保留位數
  • 示例
Var
 vValue: Double;
Begin
   vValue:= PaxFunc.RoundToCH (12.357,2);
end;
1
2
3
4
5
  • 運行結果: 12.36

# 2.41. SendArticleMessage

function SendArticleMessage(const AccountName, AOpenID: string; AContent: String): Boolean;
1

說明: 發送圖文資訊 返回值: 布爾Boolean型別

  • SendArticleMessage函式語法中各部分說明
部分 說明
AccountName 微信公眾號
AOpenID 微信使用者AOpenID,OpenID為微信使用者唯一標識ID
AContent 微信訊息內容
  • 示例
var
  j: TJSONObject;
  WechatArticle:TWechatArticle;
  i:integer;
begin
  //組裝JSON
  j := TJSONObject.Create;
  j.Addpair('title', '愛招飛是什麼?');
  j.AddPair('description', '愛招飛是資訊化與物聯網整合專家。');
  j.AddPair('URL', 'https://isoface.net');
  j.AddPair('picurl', 'http://ppic.meituba.com/uploads/allimg/2019/04/15/92_9257.jpg');
//發送模板訊息 
  if paxfunc.SendArticleMessage('測試號','oTpfe0VB-9vClZ4uSpTD05XbBNyI',j.ToJson) Then
      showmessage('發送成功!');
  j.free;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2.42. SendCustomMessage

function SendCustomMessage(const AccountName, AOpenID, AContent: string): Boolean;
1

說明: 發送文字訊息 返回值: 布爾Boolean型別

  • SendCustomMessage函式語法中各部分說明
部分 說明
AccountName 微信公眾號
AOpenID 微信使用者AOpenID,OpenID為微信使用者唯一標識ID
AContent 微信訊息內容
  • 示例
Begin
   if paxfunc.SendCustomMessage ('測試號','oTpfe0VB-9vClZ4uSpTD05XbBNyI','這是由Smart發出的一條訊息!')  Then
     showmessage('發送成功!');
End;
1
2
3
4

# 2.43. SendEmail

function SendEmail(AParam, AAttFile: TStringList): Boolean;
1

說明: 發送郵件 返回值: 布爾Boolean型別

  • SendEmail函式語法中各部分說明
部分 說明
AParam 郵件的參數,詳見示例
AAttFile 附件的地址,詳見示例
  • 示例
procedure TMyHandler.Button2Click;
//使用函式的方式發送
var
  Param: TStringlist;
  AttFile: TStringlist;
begin
  if demo then exit;
  Param := TStringlist.Create;
  AttFile := TStringlist.Create;
  Try
      Param.Values['Host'] := FThis.Edit7.Text;
      Param.Values['Port'] := FThis.Edit8.Text;
      Param.Values['Username'] := FThis.Edit5.Text;
      Param.Values['Password'] := FThis.Edit6.Text;
      Param.Values['Address'] := FThis.Edit1.Text;
      Param.Values['Body'] := FThis.Memo1.Lines.text;
      Param.Values['Subject'] := FThis.Edit3.Text;
      Param.Values['CCAddressList'] := FThis.Edit2.Text;
      Param.Values['Receipt'] := '1';
      if FThis.CheckBox1.Checked then
        Param.Values['Bodyhtml'] := '1'
      else
        Param.Values['Bodyhtml'] := '0';
      AttFile.Add(FThis.Edit4.Text);
      if paxfunc.SendEmail(Param, AttFile) then
        ShowMessage(FThis.siLang1.GetTextW('success'))
      else
        ShowMessage(FThis.siLang1.GetTextW('failed'));

  Finally
    FreeAndNil(Param);
    FreeAndNil(AttFile);
  End;
end;
1
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
32
33
34

# 2.44. SendTemplateMessage

function SendTemplateMessage(const AccountName,  AJsonContent: string): Boolean;
1

說明: 發送模板訊息 返回值: 布爾Boolean型別

  • SendTemplateMessage函式語法中各部分說明
部分 說明
AccountName 微信公眾號
AJsonContent Json格式化字串
  • 示例
var
 JsonObject:TJSONObject;
Begin
  //組裝JSON
  JsonObject := TJSONObject.Create
    .AddPair('touser', 'oTpfe0VB-9vClZ4uSpTD05XbBNyI')
    .AddPair('template_id', 'vX0v1WgEMjUwRhv8EsdeD1diwXm1CRZ5v5bty7hHHMs')
    .AddPair('url', 'isoface.net')
    .AddPair('topcolor', '#FF0000')
    .AddPair('data', TJSONObject.Create
      .AddPair('Caption', TJSONObject.Create
        .AddPair('value', '這是由Smart發出的一條訊息!')
        .AddPair('color', '#173177')
      )
);  
//發送模板訊息 
   paxfunc.SendTemplateMessage('測試號', JsonObject.ToJson);
   JsonObject.free;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 2.45. SendWechatMsg

function SendWechatMsg(const AccountName, AOpenID, ATemplateID, AContent: string): Boolean;
1

說明: 發送模板訊息 返回值: 布爾Boolean型別

  • SendWechatMsg函式語法中各部分說明
部分 說明
AccountName 微信公眾號
AOpenID 微信使用者AOpenID,OpenID為微信使用者唯一標識ID
ATemplateID 微信訊息模板ID
AContent 微信訊息內容
  • 示例
Begin
   if paxfunc.SendWechatMsg('測試號','oTpfe0VB-9vClZ4uSpTD05XbBNyI',
'vX0v1WgEMjUwRhv8EsdeD1diwXm1CRZ5v5bty7hHHMs','這是由PInToo發出的一條訊息!')  Then
     showmessage('發送成功!');
End;
1
2
3
4
5

# 2.46. ShowHandWrite

function ShowHandWrite(QData:string): string;
1

說明: 顯示字串手寫板 返回值: 布爾Boolean型別

  • ShowHandWrite函式語法中各部分說明
部分 說明
QData 一個預設的字串,可以是原文字
  • 示例
Var
  vStr:String;
Begin
   //顯示手寫板功能
   vStr := PaxFunc.ShowHandWrite ('');
End;
1
2
3
4
5
6
  • 運行效果: 手寫板

# 2.47. StreamToBase64

function  StreamToBase64(AStream:TStream):String;
1

說明: 流轉base64 返回值: String字串型別

  • StreamToBase64函式語法中各部分說明
部分 說明
AStream 流對像
  • 示例
var
 aBase64String:string;
 AStream:TMemoryStream;
begin
  //將圖片轉換成Base64
  AStream:=TMemoryStream.Create;
  AStream.Position := 0;
  FThis.image1.Picture.SaveToStream(AStream);
  aBase64String := paxfunc.StreamToBase64(AStream);
  AStream.Free;
 end;
1
2
3
4
5
6
7
8
9
10
11

# 2.48. UrlDecode

function UrlDecode(const Qurl: string): string;
1

說明: Url解碼 返回值: Word型別

  • UrlDecode函式語法中各部分說明
部分 說明
Qurl 需要編碼的內容
  • 示例
var
  v:string;
begin
  v:=paxfunc.NetHttpPost('http://192.168.1.100:8808/getprinterlist','','application/xml');
  FThis.Memo1.Lines.Add(paxfunc.urlDecode(v));
end;
1
2
3
4
5
6

# 2.49. UrlEncode

function UrlEncode(const Qurl: string): String;
1

說明: Url編碼 返回值: String字元型別

  • UrlEncode函式語法中各部分說明
部分 說明
Qurl 需要編碼的內容
  • 示例
  //*可選。郵件主題*/     
  vList.Values['EMailSubject'] := paxfunc.URLEncode('客戶基本資訊清單'); 
1
2

# 2.50. YesNoMsg

function YesNoMsg(aMsg: string; aTitle: string = ''): Boolean;
1

說明: 是否選擇對話方塊 返回值: 布爾Boolean型別

  • YesNoMsg函式語法中各部分說明
部分 說明
aMsg 對話方塊訊息內容
aTitle 對話方塊標題
  • 示例
Begin
If PaxFunc.YesNoMsg ('確認刪除嗎?', '提示') then
Begin
	Showmessage('OK')
End;
end;
1
2
3
4
5
6
  • 運行結果: 選擇對話方塊

# 2.51. ToJSONObjectString

function ToJSONObjectString(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
1

說明:將數據集中目前選擇的的數據行轉換為JSON對象的數據集。輸出的格式為欄位名稱與欄位值組成的鍵值對。 返回值: string型別。

{"code":"Code1","name":1}
1
  • ToJSONObjectString函式中語法各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AOnlyUpdatedRecords 設定是否只儲存更新的記錄
AChildRecords 設定是否包含子記錄
AValueRecords 是否包含數值記錄
AEncodeBase64Blob 是否使用Base64編碼二進制數據

# 2.52. ToJSONArrayString

function ToJSONArrayString(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
1

說明: 將數據集中的數據轉換為JSONArray。是由JSON對像組成的佇列。 返回值: string型別。

[{"code":"Code1","name":1},{"code":"Code2","name":2}]
1
  • ToJSONArrayString函式中語法各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AOnlyUpdatedRecords 設定是否只儲存更新的記錄
AChildRecords 設定是否包含子記錄
AValueRecords 是否包含數值記錄
AEncodeBase64Blob 是否使用Base64編碼二進制數據

# 2.53. ToJSONObject

function ToJSONObject(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONObject;
1

說明: 將數據集中目前指向的數據行轉換為JSON對像型別。 返回值: TJSONObject型別。

  • ToJSONObject函式中語法各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AOnlyUpdatedRecords 設定是否只儲存更新的記錄
AChildRecords 設定是否包含子記錄
AValueRecords 是否包含數值記錄
AEncodeBase64Blob 是否使用Base64編碼二進制數據

# 2.54. ToJSONArray

function ToJSONArray(ADataSet:TDataSet;const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONArray;
1

說明: 將數據集中的數據轉換為JSON對像序列型別。 返回值: TJSONArray型別。

  • ToJSONObject函式中語法各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AOnlyUpdatedRecords 設定是否只儲存更新的記錄
AChildRecords 設定是否包含子記錄
AValueRecords 是否包含數值記錄
AEncodeBase64Blob 是否使用Base64編碼二進制數據

# 2.55. SaveStructure

function SaveStructure(ADataSet:TDataSet): TJSONArray;
1

說明: 獲取目前的數據集的結構資訊,以JSONArray的方式輸出,包括數據表的欄位名稱、數據型別、大小等資訊。 返回值: TJSONArray型別。

部分 說明
ADataSet 要轉換的數據集控制元件名稱

# 2.56. ValidateJSONObject

function ValidateJSONObject(ADataSet:TDataSet;const AJSONObject: TJSONObject; const ALang: TLanguageType = enUS; const AOwns: Boolean = True): TJSONArray;
1

說明: 用於驗證JSON對像元件是否有效。 返回值:TJSONArray型別

  • ValidateJSONObject程式語法中各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AJSONObject 要驗證的JSON對像
ALang 語言型別
AOwns 設定是否佔用

# 2.57. ValidateJSONString

function ValidateJSONString(ADataSet:TDataSet;const AJSONString: string; const ALang: TLanguageType = enUS): TJSONArray;
1

說明: 用於驗證JSON對像字串是否有效。 返回值:TJSONString型別

  • ValidateJSONString程式語法中各部分說明
部分 說明
ADataSet 要轉換的數據集控制元件名稱
AJSONString 要驗證的JSON字串
ALang 語言型別

# 3. IOT類函式

  該章節中的函式需以Iot.開頭。

# 3.1. BTACreateServerSocket

function BTACreateServerSocket(ABluetoothAdapter: TBluetoothAdapter; AServerName, AUUID: string; ASecure: Boolean = false): TBluetoothServerSocket;
1

說明: 建立服務端套接字 返回值: TBluetoothServerSocket型別

  • BTACreateServerSocket函式語法中各部分說明
部分 說明
ABluetoothAdapter 藍芽適配器
AServerName 藍芽服務名稱
AUUID 藍芽服務UUID
ASecure True=可靠的
  • 示例

# 3.2. BTDCreateClientSocket

function BTDCreateClientSocket(ABluetoothDevice: TBluetoothDevice; AUUID: string; ASecure: Boolean = false): TBluetoothSocket;
1

說明: 建立客戶端套接字 返回值: TBluetoothSocket型別

  • BTDCreateClientSocket函式語法中各部分說明
部分 說明
ABluetoothDevice 藍芽設備
AUUID 藍芽服務UUID
ASecure 藍芽服務UUID
  • 示例
var
  LDevice: TBluetoothDevice;
begin
  if (FSocket = nil) or (ItemIndex <> FThis.ComboboxPaired.ItemIndex) then
  begin
    if FThis.ComboboxPaired.ItemIndex > -1 then
    begin
      // 建立客戶端套接字
      LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
      FSocket :=  IOT.BTDCreateClientSocket(LDevice,ServiceGUI,false);
      if FSocket <> nil then
      begin
        ItemIndex := FThis.ComboboxPaired.ItemIndex;
        FSocket.Connect;
        IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
        FThis.DisplayR.Lines.Add('發送數據:'+FThis.ASendData.Text);
      end
      else
        ShowMessage('Out of time -15s-');
    end
    else
      ShowMessage('No paired device selected');
  end
  else
  begin
    IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
    FThis.DisplayR.Lines.Add('發送數據:'+FThis.ASendData.Text);
  end;
end;
1
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

# 3.3. BTMConnectionState

function BTMConnectionState(ABluetoothManager: TBluetoothManager): Boolean;
1

說明: 判斷藍芽狀態 返回值: Boolean型別

  • BTMConnectionState函式語法中各部分說明
部分 說明
ABluetoothManager 目前藍芽管理器
  • 示例
  if IOT.BTMConnectionState(FBluetoothManager) then
  begin
    Labeldiscoverable.Text := 'Device discoverable as "'+FBluetoothManager.CurrentAdapter.AdapterName+'"';
    Result := True;
  end
  else
  begin
    Result := False;
    DisplayR.Lines.Add('No Bluetooth device Found');
    DisplayR.GoToTextEnd;
  end;
1
2
3
4
5
6
7
8
9
10
11

# 3.4. BTMCurrent

function BTMCurrent: TBluetoothManager;
1

說明: 獲取目前藍芽管理器 返回值: TBluetoothManager型別

  • 示例
FBluetoothManager := IOT.BTMCurrent;
1

# 3.5. BTSKSendData

procedure BTSKSendData(ABluetoothSocket: TBluetoothSocket; ASendText: string);
1

說明: 發送資訊 *BTSKSendData函式語法中各部分說明

部分 說明
ABluetoothSocket 客戶端套接字
ASendText 發送的內容
  • 示例
var
  LDevice: TBluetoothDevice;
begin
  if (FSocket = nil) or (ItemIndex <> FThis.ComboboxPaired.ItemIndex) then
  begin
    if FThis.ComboboxPaired.ItemIndex > -1 then
    begin
      LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
      FSocket :=  IOT.BTDCreateClientSocket(LDevice,ServiceGUI,false);
      if FSocket <> nil then
      begin
        ItemIndex := FThis.ComboboxPaired.ItemIndex;
         //客戶端套接字連線
        FSocket.Connect;
         //發送數據
        IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
        FThis.DisplayR.Lines.Add('發送數據:'+FThis.ASendData.Text);
      end
      else
        ShowMessage('Out of time -15s-');
    end
    else
      ShowMessage('No paired device selected');
  end
  else
  begin
   //發送數據
    IOT.BTSKSendData(FSocket,FThis.ASendData.Text);
    FThis.DisplayR.Lines.Add('發送數據:'+FThis.ASendData.Text);
  end;
end;
1
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

# 3.6. BTSKReadData

function BTSKReadData(ABluetoothSocket: TBluetoothSocket): string;
1

說明: 讀取藍芽套接字返回的內容 返回值: Word型別

  • BTSKReadData函式語法中各部分說明
部分 說明
ABluetoothSocket 客戶端套接字
  • 示例
var
 FData:String;
begin
  //發送數據
  SendData;
  //讀取數據
  FData := IOT.BTSKReadData(FSocket);
  FData := Trim(FData);
  if FData <> '' Then
  begin
    if length(FData)=10 Then
    begin
      FThis.DisplayR.Lines.Add('濕度:'+Copy(FData,1,5)+' %, 溫度:'+Copy(FData,6,4)+' ℃');
    End
    else
    begin
      FThis.DisplayR.Lines.Add('返回數據:'+FData);  
    End;
  end
  else
  begin
    FThis.DisplayR.Lines.Add('返回數據:無數據!');   
  end        
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 3.7. BTSKReceiveData

function BTSKReceiveData(ABluetoothSocket: TBluetoothSocket): string;
1

說明: 接收資訊 返回值: string型別

  • BTSKReceiveData函式語法中各部分說明
部分 說明
ABluetoothSocket 客戶端套接字
  • 示例
var
 FData:String;
begin
  //發送數據
  SendData;
  //讀取數據
  FData := IOT.BTSKReceiveData(FSocket);
  FData := Trim(FData);
  if FData <> '' Then
  begin
    if length(FData)=10 Then
    begin
      FThis.DisplayR.Lines.Add('濕度:'+Copy(FData,1,5)+' %, 溫度:'+Copy(FData,6,4)+' ℃');
    End
    else
    begin
      FThis.DisplayR.Lines.Add('返回數據:'+FData);  
    End;
  end
  else
  begin
    FThis.DisplayR.Lines.Add('返回數據:無數據!');   
  end        
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 3.8. BTSLGetServicesCount

function BTSLGetServicesCount(ABluetoothServiceList: TBluetoothServiceList): Integer;
1

說明: 統計藍芽服務個數 **返回值:**Integer型別

  • BTSLGetServicesCount函式語法中各部分說明
部分 說明
ABluetoothServiceList 藍芽服務端列表
  • 示例
var
  LServices: TBluetoothServiceList;
  LDevice: TBluetoothDevice;
  I: Integer;
begin
  FThis.ComboBoxServices.Clear;
  if ManagerConnected then
    if FThis.ComboboxPaired.ItemIndex > -1 then
    begin
      //獲取藍芽設備
      LDevice := FPairedDevices[FThis.ComboboxPaired.ItemIndex] as TBluetoothDevice;
      //獲取藍芽設備服務
      LServices := LDevice.GetServices;
      //遍歷藍芽服務列表
      for I := 0 to IOT.BTSLGetServicesCount(LServices) - 1 do
      begin
        FThis.ComboBoxServices.Items.Add(IOT.BTSLGetServicesName(LServices,I) + '-->' + IOT.BTSLGetServicesUUID(LServices,I));
      End;
      FThis.ComboBoxServices.ItemIndex := 0;
    end
    else
      ShowMessage('No paired device selected');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 3.9. BTSLServicesName

function BTSLServicesName(ABluetoothServiceList: TBluetoothServiceList; AIndex: Integer): string;
1

說明: 獲取藍芽服務名稱 返回值: string字元型別

  • BTSLServicesName函式語法中各部分說明
部分 說明
ABluetoothDeviceList 配對藍芽列表
AIndex 藍芽索引號
  • 示例
var
  LServices: TBluetoothServiceList;
  LDevice: TBluetoothDevice;
  I: Integer;
begin
  FThis.ComboBoxServices.Items.Clear;
  if ManagerConnected then
    if FThis.ComboboxPaired.ItemIndex > -1 then
    begin
      LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
      LServices := LDevice.GetServices;
      
      for I := 0 to LServices.Count - 1 do
      begin
        FThis.ComboBoxServices.Items.Add(IOT.BTSLServicesName(LServices,I) + '-->' + IOT.BTSLServicesUUID(LServices,I));
      End;
      
      if LServices.Count > 0 then
         FThis.ComboBoxServices.ItemIndex := 0;
    end
    else
      ShowMessage('No paired device selected');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 3.10. BTSLServicesUUID

function BTSLServicesUUID(ABluetoothServiceList: TBluetoothServiceList; AIndex: Integer): string;
1

說明: 獲取藍芽服務UUID 返回值: string字元型別

  • BTSLServicesUUID函式語法中各部分說明
部分 說明
ABluetoothDeviceList 配對藍芽列表
AIndex 藍芽索引號
  • 示例
var
  LServices: TBluetoothServiceList;
  LDevice: TBluetoothDevice;
  I: Integer;
begin
  FThis.ComboBoxServices.Items.Clear;
  if ManagerConnected then
    if FThis.ComboboxPaired.ItemIndex > -1 then
    begin
      LDevice := IOT.GetBluetoothDevice(FPairedDevices,FThis.ComboboxPaired.ItemIndex) as TBluetoothDevice;
      LServices := LDevice.GetServices;
      
      for I := 0 to LServices.Count - 1 do
      begin
        FThis.ComboBoxServices.Items.Add(IOT.BTSLServicesName(LServices,I) + '-->' + IOT.BTSLServicesUUID(LServices,I));
      End;
      
      if LServices.Count > 0 then
         FThis.ComboBoxServices.ItemIndex := 0;
    end
    else
      ShowMessage('No paired device selected');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 3.11. BTSSAccept

function BTSSAccept(ABluetoothServerSocket: TBluetoothServerSocket): TBluetoothSocket;
1

說明: 接收一個藍芽套接字 **返回值:**TBluetoothSocket型別 *BTSSAccept函式語法中各部分說明

部分 說明
ABluetoothServerSocket 服務端套接字
  • 示例
var
 ASocket:TBluetoothSocket;
begin
  ASocket := nil;
  ASocket := IOT.BTSSAccept(FServerSocket);
 end;
1
2
3
4
5
6

# 3.12. ComReadAnsiString

function ComReadAnsiString(AComPort:TComPort): AnsiString;
1

說明: 讀取通訊埠返回的字串 返回值: AnsiString字串型別

  • ComReadAnsiString函式語法中各部分說明
部分 說明
AComPort 需要操作的通訊埠通訊控制元件對像

# 3.13. ComReadString

function ComReadString(AComPort:TComPort): String;
1

說明: 讀取通訊埠返回的字串 返回值: String字串型別

  • ComReadString函式語法中各部分說明
部分 說明
AComPort 需要操作的通訊埠通訊控制元件對像

# 3.14. GetBluetoothDevice

function GetBluetoothDevice(ABluetoothDeviceList: TBluetoothDeviceList; AIndex: Integer): TBluetoothDevice;
1

說明: 獲取已配對藍芽 返回值: TBluetoothDevice型別

  • GetBluetoothDevice函式語法中各部分說明
部分 說明
ABluetoothDeviceList 配對藍芽列表
AIndex 藍芽索引號
  • 示例
var
  I: Integer;
begin
  FThis.ComboboxPaired.Items.Clear;
  FPairedDevices := FBluetoothManager.GetPairedDevices;
  if FPairedDevices.Count > 0 then
  begin
    for I:= 0 to FPairedDevices.Count - 1 do
    begin
      FBluetoothDevice := IOT.GetBluetoothDevice(FPairedDevices,I);
      FThis.ComboboxPaired.Items.Add(FBluetoothDevice.DeviceName);
    end;
  end
  else
    FThis.ComboboxPaired.Items.Add('No Paired Devices');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 3.15. IdTCPClientSendCmd

function IdTCPClientSendCmd(AIdTCPClient: TIdTCPClient; QAOut: string): Int16;
1

說明: 發送TCP命令 返回值: Int16型別

  • IdTCPClientSendCmd函式語法中各部分說明
部分 說明
AIdTCPClient 需要操作的IdTCPClient對像
QAOut 發送的內容
  • 示例
//發送TCP命令
IOT.IdTCPClientSendCmd(FThis.IdTCPClient1,'1');
1
2

# 3.16. ModbusTCPReadCoils

function ModbusTCPReadCoils(const RegNo, Blocks: Word; Modbus: TIdModBusClient): string;
1

說明: 讀取輸出數位訊號 返回值: String字串型別

  • ModbusTCPReadCoils函式語法中各部分說明
部分 說明
RegNo 起始位址
Blocks 數據長度
Modbus 需要操作的ModbusTCP對像

# 3.17. ModbusTCPReadHoldingRegisters

function ModbusTCPReadHoldingRegisters(const RegNo, Blocks: Word; Modbus: TIdModBusClient): string;
1

說明: 讀取輸出類比訊號 返回值: String字串型別

  • ModbusTCPReadHoldingRegisters函式語法中各部分說明
部分 說明
RegNo 起始位址
Blocks 數據長度
Modbus 需要操作的ModbusTCP對像

# 3.18. ModbusTCPWriteCoils

function ModbusTCPWriteCoils(const RegNo, Blocks: Word; const RegisterData: string; Modbus: TIdModBusClient): boolean;
1

說明: 寫入數位(多個)訊號 返回值: boolean布爾型別

  • ModbusTCPWriteCoils函式語法中各部分說明
部分 說明
RegNo 起始位址
Blocks 數據長度
RegisterData 需要寫入的內容
Modbus 需要操作的ModbusTCP對像

# 3.19. ModbusTCPWriteRegisters

function ModbusTCPWriteRegisters(const RegNo, Blocks: Word; const RegisterData: string; Modbus: TIdModBusClient): boolean;
1

說明: 寫入類比(多個)訊號 返回值: boolean布爾型別

  • ModbusTCPWriteRegisters函式語法中各部分說明
部分 說明
RegNo 起始位址
Blocks 數據長度
RegisterData 需要寫入的內容
Modbus 需要操作的ModbusTCP對像

# 4. BaseFrom基類函式

基類程式在指令碼中呼叫時,必須以FThis.開頭。

# 4.1. GetData

function GetData(QIndex: Integer): TRFDataSet;
1

說明: 獲取基類數據集 返回值: 數據集TRFDataSet型別

  • GetData函式語法中各部分說明
部分 說明
QIndex 數據集索引
  • 示例
Var
 vData:TRFDataSet;
begin
  //獲取基類DataSetList中第0號數據集
  vData :=FThis.GetData (0);
  vData.Open;
end;
1
2
3
4
5
6
7
系統程式
自定程式

← 系統程式 自定程式→

Copyright © 2021-2025 愛招飛IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式