自定函式
# FastERP 自定函式
# 1. 基類函式
本章節的函式在使用時需以FThis.
開頭。
# 1.1. GetContextDataValue
function GetContextDataValue(QiData: Integer; QFieldName: string): Variant;
說明: 獲取上文窗體數據集中的欄位值。 返回值: 變體Variant型別。
- GetContextDataValue函式語法中各部分說明
部分 | 說明 |
---|---|
QiData | 數據集索引 |
QFieldName | 數據集欄位名稱 |
- 示例
VAR
vVariant:Variant;
vStr:string;
begin
vVariant := FThis. GetContextDataValue(0, 'FBiller');
vStr := VarToStr(vVariant);
Showmessage('數據集欄位值是:'+ vStr);
end;
2
3
4
5
6
7
8
# 1.2. IsExistsContext
function IsExistsContext: Boolean;
說明: 判斷窗體是否有上文窗體。 返回值: 布爾Boolean型別。
- 示例
VAR
vBoolean:Boolean;
begin
vBoolean := FThis.IsExistsContext;
IF vBoolean THEN
Showmessage('存在上文窗體!');
end;
2
3
4
5
6
7
# 1.3. OperateLog
function OperateLog(opeType: string): Boolean;
說明: 登記操作日誌。 返回值: 布爾Boolean型別。
- OperateLog函式語法中各部分說明
部分 | 說明 |
---|---|
opeType | 動作型別 |
示例
begin
if FThis.OperateLog('作廢') then
Showmessage('作廢日誌登記成功!');
end;
2
3
4
# 2. DM類函式
本章節的函式在使用時需以DM.
開頭。
# 2.1. ExecProcedure
function ExecProcedure(const QstoreName: string; QParams: TArrayaString): Boolean;
說明: 執行預存程序。 返回值: 布爾Boolean型別。
- ExecProcedure函式語法中各部分說明
部分 | 說明 |
---|---|
QstoreName | 預存程序名稱 |
QParams | 參數陣列 |
- 示例
var
tempVar:TArrayaString;
begin
//通過提示對話方塊詢問使用者
if not dbfun.ShowConfirmDialogue('提示','確定刪除資料嗎?',295) then Abort();
//設定tempVar陣列長度
SetLength(tempVar,4);
//預存程序參數賦值
tempVar[0] := FThis.dts0.FieldByName('FInterID').AsString;
tempVar[1] := 'Delete';
tempVar[2] := '';
tempVar[3] := '';
//執行預存程序
DM.ExecProcedure('sp_Basic_Item',tempVar);
//重新整理目前窗體數據
FThis.CurrID := FThis.FCurrID;
//關閉目前窗體
FThis.Close;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 2.2. ExecProcedureR
function ExecProcedureR(const QstoreName: string; QParams: TArrayaString): String;
說明: 執行預存程序。 返回值: 字串Srtring型別。
- ExecProcedureR函式語法中各部分說明
部分 | 說明 |
---|---|
QstoreName | 預存程序名稱 |
QParams | 參數陣列 |
- 示例
var
tempVar:TArrayaString;
vResult:string;
begin
//通過提示對話方塊詢問使用者
if not dbfun.ShowConfirmDialogue('提示','確定刪除資料嗎?',295) then Abort();
//設定tempVar陣列長度
SetLength(tempVar,4);
//預存程序參數賦值,最後一個參數值為返回值
tempVar[0] := FThis.dts0.FieldByName('FInterID').AsString;
tempVar[1] := 'Delete';
tempVar[2] := '';
tempVar[3] := '';
//執行預存程序
vResult := DM.ExecProcedureR('sp_Basic_Item',tempVar);
if vResult <> ''then
begin
//顯示返回值內容
Showmessage(vResult);
end;
//重新整理目前窗體數據
FThis.CurrID := FThis.FCurrID;
//關閉目前窗體
FThis.Close;
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
# 2.3. GetCachData
function GetCachData(QName: string): TSQModuleDataset;
說明: 獲取快取數據集。 返回值: TSQModuleDataset數據集型別。
- GetCachData函式語法中各部分說明
部分 | 說明 |
---|---|
QName | 快取數據集索引 |
- 示例
VAR
vDataSet: TSQModuleDataset;
begin
//根據快取數據集索引名獲取快取數據集
vDataSet := DM.GetCachData('付款方式');
//判斷獲取到的快取數據集是否為空
if vDataSet <> nil then
Showmessage('獲取付款方式快取數據整合功!');
end;
2
3
4
5
6
7
8
9
# 2.4. GetUserDefault
function GetUserDefault(QDefaultName: string): String;
說明: 獲取使用者預設值。 返回值: 字元 String型別。
- GetUserDefault函式語法中各部分說明
部分 | 說明 |
---|---|
QDefaultName | 預設值索引名稱 |
- 示例
VAR
vStr: String;
begin
//根據預設值索引名稱獲取預設值
vStr:= DM.GetUserDefault ('白坯倉庫');
//判斷獲取到的白坯倉庫預設值是否為空
if vStr <> '' then
Showmessage('獲取到的白坯倉庫預設值是:'+ vStr);
end;
2
3
4
5
6
7
8
9
# 2.5. OpenData
function OpenData(QDataSet: TRFDataSet): Boolean;
說明: 打開數據集。 返回值: 布爾Boolean型別。
- OpenData函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | TRFDataSet數據集對像 |
- 示例
var
vDataSet:TRFDataSet;
begin
//建立數據集對像
DM.CreateSQDataSet(vDataSet ,nil);
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;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 2.6. OpenData
function OpenData(QDataSet: TSQModuleDataset): Boolean;
說明: 打開數據集。 返回值: 布爾Boolean型別。
- OpenData函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | TSQModuleDataset數據集對像 |
- 示例
var
vDataSet: TSQModuleDataset;
begin
//建立數據集對像
DM.CreateSQModuelDataSet(vDataSet ,nil);
Try
//對數據集SQL賦值
vDataSet.SQL.Text := 'SELECT * FROM Baisc_Whs';
//打開數據集,以下二種方法都可行
//打開方式1
vDataSet.Open;
//打開方式2
DM.OpenData(vDataSet);
If vDataSet.RecordCount >0then
Begin
Showmessage('數據集不為空!');
End;
Finally
vDataSet.Free;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 2.7. OpenDatas
function OpenDatas(QDataSetList: TList<TRFDataSet>): Boolean;
說明: 批次打開數據集。 返回值: 布爾Boolean型別。
- OpenDatas函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSetList | 數據集對像集合 |
- 示例
指令碼中暫不支援TList<>對象。
# 2.8. SaveData
function SaveData(QDataSet: TRFDataSet): Boolean; overload;
說明: 數據集提交。 返回值: 布爾Boolean型別。
- SaveData函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | TSQModuleDataset數據集對像 |
- 示例
var
vDataSet: TRFDataSet;
begin
//建立數據集對像
DM.CreateSQDataSet(vDataSet ,nil);
Try
//對數據集SQL賦值
vDataSet.SQL.Text := 'SELECT TOP 0 * FROM Baisc_Whs';
//打開數據集
vDataSet.Open;
//新增一條數據
vDataSet.Append;
vDataSet.FieldByName('FInterID').asInteger := DBFun.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;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 2.9. SaveData
function SaveData(QDataSet: TSQModuleDataset): Boolean; overload;
說明: 數據集提交。 返回值: 布爾Boolean型別。
- SaveData函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | TSQModuleDataset數據集對像 |
- 示例
var
vDataSet: TSQModuleDataset;
begin
//建立數據集對像
DM.CreateSQDataSet(vDataSet ,nil);
Try
//對數據集SQL賦值
vDataSet.SQL.Text := 'SELECT TOP 0 * FROM Baisc_Whs';
//打開數據集
vDataSet.Open;
//新增一條數據
vDataSet.Append;
vDataSet.FieldByName('FInterID').asInteger := DBFun.GetNodeID;
vDataSet.FieldByName('FWhsCode').asString:= '0101';
vDataSet.FieldByName('FWhsName').asString := '白坯倉庫';
vDataSet.Post;
If DM.SaveData(vDataSet) then
Begin
Showmessage('數據提交成功!');
End;
Finally
vDataSet.Free;
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 2.10. SaveDatas
function SaveDatas(QDataSetList: TList<TRFDataSet>): Boolean;
說明: 批次提交數據集。 返回值: 布爾Boolean型別。
- SaveDatas函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSetList | 數據集對像集合 |
- 示例
指令碼中暫不支援TList<>對象。
# 2.11. 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 | 參數資訊,以鍵值對的方式進行 |
- 示例
//PasScript
var
l: TStringList;
begin
l := TStringList.Create();
l.Values['text'] := 'Hello WebSocket Test';
if (DM.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
# 2.12. SendWsMsgBySid
function SendWsMsgBySId(const sid, msg: string): Boolean;
說明:向指定的會話ID的客戶端發送WebSocket資訊。 返回值:Boolean,用於反饋是否發送成功。
- SendWsMsgBySId 函式語法中各部分說明
部分 | 說明 |
---|---|
sid | 指定會話的名稱 |
msg | 要發送的訊息內容 |
- 示例
//PasScript
DM.SendWsMsgBySId('esp32_001','Off');
2
# 2.13. SendWsMsgByStr
function SendWsMsgByStr(const msg: string): Boolean;
說明:向WS伺服器發送WebSocket資訊。 返回值:Boolean,用於反饋是否發送成功。
- SendWsMsgByStr 函式語法中各部分說明
部分 | 說明 |
---|---|
msg | 要發送的訊息內容,僅支援傳輸指定的json |
- 示例
//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 + '"' +
'}' +
']' +
'}' +
'}';
DM.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
# 3. DBFun類函式
本章節的函式在使用時需以DBFun.
開頭。
# 3.1. CheckFieldEmpty
function CheckFieldEmpty(QField: TField): Boolean;
說明: 判斷欄位是否為空。 返回值: 布爾Boolean型別。
- CheckFieldEmpty函式語法中各部分說明
部分 | 說明 |
---|---|
QField | 數據集欄位對像 |
- 示例
If DBFun.CheckFieldEmpty (FThis.dts0.FieldByName('FBiller')) then
Begin
Showmessage('數據集欄位FBiller 內容為空。');
End;
2
3
4
# 3.2. CheckUser
function CheckUser(QUserName: string): Boolean;
說明: 校驗使用者合法性 返回值: 布爾Boolean型別。
- CheckUser函式語法中各部分說明
部分 | 說明 |
---|---|
QUserName | 使用者名稱稱 |
- 示例
Begin
//校驗客戶編號是否存在
If DBFun.CheckUser ('劉德華') then
Begin
Showmessage(劉德華使用者未授權!');
End;
end;
2
3
4
5
6
7
# 3.3. DataSetIsEdit
function DataSetIsEdit(const QDataSet: TRFDataSet): Boolean;
說明: 判斷數據集是否處於編輯狀態。 返回值: 布爾Boolean型別。
- DataSetIsEdit函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | 數據集對像 |
- 示例
If DBFun.DataSetIsEdit(FThis.dts0) then
Begin
Showmessage('數據集dts0處理編輯狀態。');
End;
2
3
4
# 3.4. DataSetTableCompute
function DataSetTableCompute(ADataSet: TSQModuleDataSet; AOperator, AFieldName: String; AFilter: String = ''): Variant;
說明: 數據集欄位統計 返回值: 變體Variant型別
- DataSetTableCompute函式語法中各部分說明
部分 | 說明 |
---|---|
ADataSet | 指定一個需要統計的數據集對像 |
AOperator | 操作符(最大值MAX、最小值MIN、統計COUNT、合計SUM、平均值AVG) |
AFieldName | 指定一個需要統計的欄位名稱 |
AFilter | 數據集過濾條件內容 |
- 示例
//統計單據明細對應的碼單明細
var
v: Variant;
begin
//判斷窗體是否處於欄位改變狀態
if FThis.FFieldChanging then exit;
try
//設定窗體處於欄位改變狀態
FThis.FFieldChanging := true;
//判斷數據集dts2是否為空
if not FThis.dts2.IsEmpty then
begin
//初始化變數v
v := null;
FThis.dts1.First;
while Not FThis.dts1.Eof do
begin
if FThis.dts2.RecordCount > 0 then
begin
FThis.dts1.Edit;
//統計dts2數據集被選中的FAuxQty欄位的彙總數
v := DBFUN.DataSetTableCompute(FThis.dts2,'SUM','FAuxQty',
'FID='+FThis.dts1FID.AsString+' and FSelected = 1');
DBFUN.SetFieldVariant(FThis.dts1FAuxQty,v);
//統計dts2數據集被選中的記錄數
v := DBFUN.DataSetTableCompute(FThis.dts2,'Count','1',
'FID='+FThis.dts1FID.AsString+' and FSelected = 1');
DBFUN.SetFieldValue(FThis.dts1FQtyPiece,v);
end;
FThis.dts1.Next;
end;
end;
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
32
33
34
# 3.5. FileDownload
function FileDownload(const ARemoteFileName, ALocalNewFileName: string): Boolean;
說明: 檔案下載 返回值: 布爾 Boolean 型別
- FileDownload函式語法中各部分說明
部分 | 說明 |
---|---|
ARemoteFileName | 遠端檔名 |
ALocalNewFileName | 本地檔名 |
- 示例
//從伺服器Downloads目錄下載1.txt檔案到本地
begin
DBFUN.FileDownload('Downloads/1.txt','1.txt');
end;
2
3
4
# 3.6. FileUpload
function FileUpload(const ALocalFileName: string; const ARemoteFilePath: string = ''; const ARemoteFileName: string = ''): Boolean;
說明: 檔案上傳 返回值: 布爾 Boolean 型別
- FileUpload函式語法中各部分說明
部分 | 說明 |
---|---|
ALocalFileName | 本地檔名 |
ARemoteFilePath | 遠端目錄 |
ARemoteFileName | 遠端檔名 |
- 示例
//將exe根目錄的1.txt檔案上傳至伺服器Downloads目錄下,上傳可重新指定檔名
begin
DBFUN.UpDownload('1.txt','Downloads','New1.txt');
end;
2
3
4
# 3.7. FocusedRecordGetValues*
function FocusedRecordGetValues(AFocusedRecord: TcxCustomGridRecord; QColumn: TcxGridDBColumn):
Variant; overload;;
function FocusedRecordGetValues(AFocusedRecord: TcxCustomGridRecord; QColumn: TcxGridDBBandedColumn):
Variant; overload;
2
3
4
說明: 獲取表格記錄中指定單元格中的值 返回值: 變體 Variant 型別
- FocusedRecordGetValues函式語法中各部分說明
部分 | 說明 |
---|---|
AFocusedRecord | 表格記錄對像 |
QColumn | 表格記錄中指定列對像 |
- 示例
procedure TMyHandler.tbGriddts0OnCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; Var ADone: Boolean);
var
s:string;
begin
//獲取表格中tbGriddts0FBillNo列的值
s:= DBFUN.FocusedRecordGetValues(AViewInfo.GridRecord,FThis.tbGriddts0FBillNo);
end;
2
3
4
5
6
7
8
# 3.8. GetBatchNo
function GetBatchNo(QBillID: string): string;
說明: 獲取批號流水號 返回值: 字元String型別。
- GetBatchNo函式語法中各部分說明
部分 | 說明 |
---|---|
QBillID | 流水編號 |
- 示例
//單據儲存時,產生單據明細的批號資訊
procedure TMyHandler.tbSaveOnClick(Sender: TObject);
begin
//判斷數據集dts1是否為空
if FThis.dts1.IsEmpty then exit;
FThis.dts1.First;
FThis.dts1.DisableControls;
while not FThis.dts1.Eof do
begin
FThis.dts1.Edit;
if FThis.dts1FBatchNo.AsString = '' then
//產生批號
FThis.dts1FBatchNo.AsString := DBFUN.GetBatchNo('17020004');
FThis.dts1.Next;
end;
FThis.dts1.EnableControls;
FThis.dts1.ReadOnly := false ;
//儲存單據
FThis.DoSave;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3.9. GetBillNo
function GetBillNo(QBillID: string; QDate: TDateTime; QPreview: Boolean): string;
說明: 獲取單據流水號 返回值: 字元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;
2
3
4
5
6
7
# 3.10. GetColorNo
function GetColorNo(QBillID: string; QDate: TDateTime; QPreview: Boolean): string;
說明: 獲取色號(印染行業專用) 返回值: 字元 String 型別
- GetColorNo函式語法中各部分說明
部分 | 說明 |
---|---|
QBillID | 色號流水規則編號 |
QDate | 日期 |
QPreview | 是否預覽模式 |
- 示例
//數據集dts1新增記錄時,產生色號
//參數QPreview為true時,色號產生只是預覽模式,還未正式產生
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
FThis.dts1FColorNo.AsString := DBFUN.GetColorNo('9900001',Now(),false);
end;
2
3
4
5
6
7
# 3.11. GetFirstDayofMonth
function GetFirstDayofMonth(const DT: TDateTime): TDateTime;
說明: 獲取指定日期所在月份的第一天 返回值: 日期TDateTime型別
- GetFirstDayofMonth函式語法中各部分說明
部分 | 說明 |
---|---|
DT | 指定的一個日期型別 |
- 示例
Var
vMonthBeginDay:TDateTime;
Begin
vMonthBeginDay := DBFun.GetFirstDayofMonth('2019-07-10');
end;
2
3
4
5
運行結果: 2019-07-01
# 3.12. GetLastDayofMonth
function GetLastDayofMonth(const DT: TDateTime): TDateTime;
說明: 獲取指定日期所在月份的第后一天 返回值: 日期TDateTime型別
- GetLastDayofMonth函式語法中各部分說明
部分 | 說明 |
---|---|
DT | 指定的一個日期型別 |
- 示例
Var
vMonthEndDay:TDateTime;
Begin
vMonthEndDay := DBFun.GetFirstDayofMonth('2019-07-10');
end;
2
3
4
5
運行結果: 2019-07-31
# 3.13. GetListBySQL
function GetListBySQL(QSQL: string): TStringList;
說明: 根據SQL獲取字串列表 返回值: 字串列表TStringList
- GetListBySQL函式語法中各部分說明
部分 | 說明 |
---|---|
QSQL | 指定一個SQL內容 |
- 示例
Var
vStrList:TStringList;
begin
//將Basic_Process表裡的FProcessName內容組成一個字串列表
vStrList:= DBFun. GetListBySQL ('Select FProcessName From Basic_Process');
end;
2
3
4
5
6
# 3.14. GetNodeID
function GetNodeID(QCount: Integer = 1; QNoRecord: Boolean = False): Integer;
說明: 獲取唯一ID 返回值: 整數Integer 型別
- GetNodeID函式語法中各部分說明
部分 | 說明 |
---|---|
QCount | 取多少個ID(不能超過999) |
QNoRecord | 是否返回結果集 |
- 示例
//數據集dts1新增記錄時,產生主鍵唯一ID
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
FThis.dts1FInterID.asInteger:= DBFUN.GetNodeID;
end;
2
3
4
5
6
# 3.15. GetNow
Function GetNow(byServer: Boolean; QGetType, TimeForamt: string): Variant;
說明: 獲取日期時間 返回值: 變體Variant 型別
- GetNow函式語法中各部分說明
部分 | 說明 |
---|---|
byServer | 是否按伺服器時間 |
QGetType | 獲取型別(NEW,SQL) |
TimeForamt | 日期時間格式 yyyy-mm-dd |
- 示例
//數據集dts1新增記錄時,產生記錄建立時間
procedure TMyHandler.dts1OnNewRecord(DataSet: TDataSet);
begin
FThis.dts1.Edit;
//獲取本地日期時間
FThis.dts1FCreateDate.asDateTime := DBFUN.GetNow;
//獲取伺服器日期時間
FThis.dts1FCreateDate.asDateTime := DBFUN.GetNow(true);
//獲取伺服器日期
FThis.dts1FCreateDate.asDateTime := DBFUN.GetNow(true, 'NEW', 'yyyy-mm-dd');
end;
2
3
4
5
6
7
8
9
10
11
# 3.16. GetNumber
function GetNumber(S: string): string;
說明: 擷取字串中的數字 返回值: 字元String型別
- GetNumber函式語法中各部分說明
部分 | 說明 |
---|---|
S | 指定一個包含數字的字串 |
- 示例
var
v:string;
begin
v:= DM.GetNumber ('12A56B.A11');
//顯示返回的SQL內容
Showmessage(v);
end;
2
3
4
5
6
7
運行結果: 125611
# 3.17. GetSelectedDataCount
function GetSelectedDataCount(QDataSet: TRFDataSet; FSelectField: string = 'FSelected'): Integer;
說明: 返回值:
- GetSelectedDataCount函式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | 指定的一個數據集型別 |
FSelectField | 指定的數據集中作為標記的欄位名稱,預設欄位名稱為FSelected,也可自定 |
- 示例
Var
iCount:Integer;
Begin
//獲取數據集dts1中,FSelected欄位選中狀態的記錄個數
iCount:= DBFun.GetSelectedDataCount (FThis.dts1);
end;
2
3
4
5
6
# 3.18. GetSelectedValues
function GetSelectedValues(QDataSet: TRFDataSet; QKeyField: string; QSelectField:string = 'FSelected'):string;
說明: 獲取 返回值: 字元string型別。
- GetSelectedValues程式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | 指定一個需要操作的數據集對像 |
QKeyField | 主鍵欄位名稱 |
QSelectField | 表示狀態的欄位名稱 |
- 示例
var
vStr: String;
begin
vStr := DBFun.GetSelectedValues(FThis.dts0, 'FInterID',vInterIDList, 'FSelected');
end;
2
3
4
5
# 3.19. GetSQLValue
function GetSQLValue (const QSQL: string): Variant;
說明: 獲取SQL語句值。 返回值: 變體Variant型別。
- GetSQLValue函式語法中各部分說明
部分 | 說明 |
---|---|
QSQL | SQL語句字串 |
- 示例
var
vVariant
vSQL:string;
begin
//執行函式
vVariant:= DBFun.GetSQLValue ('SELECT FWhsName FROM Basic_Whs WHERE FInterID = 1');
if VarToStr(vVariant) = '白坯倉庫' then
begin
//顯示返回值內容
Showmessage('取值正確!');
end;
end;
2
3
4
5
6
7
8
9
10
11
12
# 3.20. GetStrByList
function GetStrByList(QStr: TStrings; QQuotedStr: Boolean = True): String;
說明: 根據字串列表組裝成格式化的字串 返回值: 字元String型別
- GetStrByList函式語法中各部分說明
部分 | 說明 |
---|---|
QStr | 指一定個字串列表,包含需要組裝的內容 |
QQuotedStr | 是否以字元型別組裝 |
- 示例1
Var
vStrList:TStringList;
vStr:string;
begin
vStrList := TStringList.Create;
try
vStrList.CommaText:= '1902001,156987,11258';
vStr := DBFun.GetStrByList(vStrList);
finally
vStrList.free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
運行結果: '1902001', '156987', '11258'
- 示例2
Var
vStrList:TStringList;
vStr:string;
begin
vStrList := TStringList.Create;
try
vStrList.CommaText:= '1902001,156987,11258';
vStr := DBFun.GetStrByList(vStrList,false);
finally
vStrList.free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
運行結果: 1902001, 156987, 11258
# 3.21. GetStrBySQL
function GetStrBySQL(QSQL: string): String;
說明: 根據SQL組裝字串 返回值: 字元String型別
- GetStrBySQL函式語法中各部分說明
部分 | 說明 |
---|---|
QSQL | 指定一個SQL內容 |
- 示例
Var
vStr:String;
begin
//將Basic_Process表裡的FProcessName內容組成一個字串
vStr := DBFun.GetStrBySQL('Select FProcessName From Basic_Process');
end;
2
3
4
5
6
運行結果: 翻布;配桶;染色;定型
# 3.22. GetTransSQL
function GetTransSQL(ASQLCode: string): string;
說明: 根據SQL配置編號獲取SQL語句內容 返回值:
- GetTransSQL函式語法中各部分說明
部分 | 說明 |
---|---|
ASQLCode | 指定一個SQL配置編號 |
- 示例
var
vSQL:string;
begin
vSQL:= DBFun.GetTransSQL ('SQL_Cust');
//顯示返回的SQL內容
Showmessage(vSQL);
end;
2
3
4
5
6
7
# 3.23. GetJSONObject
function GetJSONObject(const QJSONObject: TJSONValue; const QPath:String):TJSONObject;
說明: 獲取JSON對像中指定的巢狀對象。 返回值: TJSONObject型別。
- GetJSONObject 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
- 示例
假設需要對以下JSON進行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
j := DBFun.GetJSONObject(j,'Language');
ShowMessage(DBFun.GetJSONNumber(j,'DefaultLanguage'));
//上述兩句程式也可改寫為
//ShowMessage(DBFun.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
以上程式運行后獲取到的值為1。
# 3.24. GetJSONArray
function GetJSONArray(const QJSONObject: TJSONValue; 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
//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(DBFun.ParseJSONValue(s));
A := DBFun.GetJSONArray(j,'Language.options');
J := TJSONObject(A.Items[1]);
ShowMessage(DBFun.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
以上程式運行后獲取到的值為2。
# 3.25. GetJSONString
function GetJSONString(const QJSONObject: TJSONValue; const QPath:String):String;
說明: 獲取JSON對像中指定鍵值的字串。 返回值: String型別。
- GetJSONString 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
假設需要對以下JSON進行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
ShowMessage(DBFun.GetJSONString(j,'status'));
Finally
j.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
以上程式運行后獲取到的值為OK。
# 3.26. GetJSONNumber
function GetJSONNumber(const QJSONObject: TJSONValue; const QPath:String):String;
說明: 獲取JSON對像中指定的鍵值中的數值。 返回值: String型別。
- GetJSONNumber 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
- 示例
假設需要對以下JSON進行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
j := DBFun.GetJSONObject(j,'Language');
ShowMessage(DBFun.GetJSONNumber(j,'DefaultLanguage'));
//上述兩句程式也可改寫為
//ShowMessage(DBFun.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
以上程式運行后獲取到的值為1。
# 3.27. GetJSONInteger
function GetJSONInteger(const QJSONObject: TJSONValue; const QPath:String):Integer;
說明: 獲取JSON對像中指定的鍵值中的整數數值,並以整數的形式返回。 返回值: Integer型別。
- GetJSONInteger 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
- 示例
假設需要對以下JSON進行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
i := DBFun.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
以上程式運行后獲取到的值為1。
# 3.28. GetJSONFloat
function GetJSONFloat(const QJSONObject: TJSONValue; const QPath:String):Double;
說明: 獲取JSON對像中指定的鍵值中的浮點數數值,並以浮點數的形式返回。 返回值: Double型別。
- GetJSONFloat 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
- 示例
假設需要對以下JSON進行解析。
{
"status": "OK",
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
i := DBFun.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
以上程式運行后獲取到的值為1.1。
# 3.29. GetJSONBool
function GetJSONBool(const QJSONObject: TJSONValue; const QPath:String):Boolean;
說明: 獲取JSON對像中指定的鍵值中的布爾數值,並以布林值的形式返回。 返回值: Boolean型別。
- GetJSONBool 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
假設需要對以下JSON進行解析。
{
"status": true,
"Language":{
"DefaultLanguage": 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(DBFun.ParseJSONValue(s));
if (DBFun.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
以上程式運行后獲取到的值為{"status": true}
。
# 3.30. GetJSONValue
function GetJSONValue(const QJSONObject: TJSONValue; const QPath:String):TJSONValue;
說明: 獲取JSON對像中指定的鍵值中的值。 返回值: TJSONValue型別。
- GetJSONBool 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
# 3.31. JSONArray_AddJSONObject
function JSONArray_AddJSONObject(QJSONArray:TJSONArray;const QJSONObject: TJSONValue):TJSONArray;
說明: 在原有的JSON佇列中新增一個新的JSON對像 返回值: TJSONArray型別。
- GetJSONBool 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONArray | 要進行獲取對像操作的JSON佇列名稱 |
QJSONObject | 要新增的JSON對像名稱 |
假設有以下的佇列:
[{"status":"ok"}]
需要向其中新增以下的json對像:
{"status":"no"}
Var
J:TJSONValue;
A:TJSONArray;
s1,s2: String;
begin
s1:= '[{"status":"ok"}]';
s2:= '{"status":"no"}';
A := TJSONArray(DBFun.ParseJSONValue(s1));
J := DBFun.ParseJSONValue(s2);
A := DBFun.JSONArray_AddJSONObject(A,J);
ShowMessage(A.ToString);
end;
2
3
4
5
6
7
8
9
10
11
12
執行以上程式,輸出的結果為 [{"status","ok"},{"status":"no"}]
# 3.32. JSONObject_AddJSONArray
function JSONObject_AddJSONArray(QJSONObject: TJSONObject; const Str: string; const Val: TJSONValue):TJSONObject;
說明: 在原有的JSON對像中新增一個新的JSON值以獲取一個新的JSON對像 返回值: TJSONObject型別。
部分 | 說明 |
---|---|
QJSONObject | 要獲取的JSON對像名稱 |
Str | 要新增的鍵名 |
Val | 要新增的鍵值 |
假設有以下的json對像:
{"status":"ok"}
需要合併以下的json佇列作為子對像
[{"status":"no"}]
Var
J1:TJSONValue;
J2:TJSONValue;
A: TJSONValue;
s1,s2: String;
begin
s1:= '{"status":"ok"}';
s2:= '[{"status":"no"}]';
J1 := DBfun.ParseJSONValue(s1);
A := DBfun.ParseJSONValue(s2);
J2 := DBfun.JSONObject_AddJSONArray(TJSONObject(J1),'array',A);
ShowMessage(j2.ToString);
end;
2
3
4
5
6
7
8
9
10
11
12
13
執行以上程式,輸出的結果為 [{"status","ok"},"array":[{"status":"no"}]}
# 3.33. JSONParse
function JSONParse(QType, QPath, QJson: string): string;
說明: 解析JSON,獲取JSON中的單元的取值。 返回值: string型別。
部分 | 說明 |
---|---|
QType | 要獲取的JSON對像型別 GetJSONObject ,GetJSONArray ,GetJSONNumber 、GetJSONObject 、GetJSONValue 、GetJSONBool 、GetJSONPair |
QPath | 獲取的JSON對象的路徑名稱 |
QJSON | 要解析的JSON對像文字 |
- 示例
```JSON
{
"status": true,
"Language":{
"DefaultLanguage": 1
}
}
2
3
4
5
6
7
//PasScript
Var
s: String;
begin
s:= '{"status": "OK","Language":{"DefaultLanguage": 1}}';
ShowMessage(DBFun.JSONParse('GetJSONString','status',s));
end;
2
3
4
5
6
7
# 3.34. ParseJSONValue
function ParseJSONValue(QJson: string): TJSONValue;
說明: 獲取字串形式的JSON對像中指定的鍵值中的值。 返回值: TJSONValue型別。
- GetJSONBool 函式語法中各部分說明
部分 | 說明 |
---|---|
QJSONObject | 要進行獲取對像操作的JSON對像名稱 |
QPath | 對像在JSON中的路徑名稱,路徑的名稱之間以"."作為分隔標誌 |
# 3.35. HTTPDecode
function HTTPDecode(const AStr: string): string;
說明: HTTP解碼 返回值: 字元型別String
- HTTPDecode 函式語法中各部分說明
部分 | 說明 |
---|---|
AStr | 指定需要解碼的字串 |
# 3.36. HTTPEncode
function HTTPEncode(const AStr: string): string;
說明: HTTP編碼 返回值: 字元型別String
- HTTPEncode 函式語法中各部分說明
部分 | 說明 |
---|---|
AStr | 指定需要編碼的字串 |
# 3.37. InputBoxDate
function InputBoxDate(ATitle, ACaption: String; var AResult: TDateTime): Boolean;
2
說明: 日期輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxDate函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
ACaption | 輸入值說明 |
AResult | 輸入值變數 |
- 示例
var
vDate:TDateTime;
begin
vDate := Now();
DBFun.InputBoxDate ('請輸入日期... ', vDate);
end;
2
3
4
5
6
運行結果
# 3.38. InputBoxDateTime
function InputBoxDateTime(ATitle, ACaption: String; var AResult: TDateTime): Boolean;
說明: 日期時間輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxDateTime函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
ACaption | 輸入值說明 |
AResult | 輸入值變數 |
- 示例
var
vDate:TDateTime;
begin
vDate := Now();
DBFun.InputBoxDateTime ('請輸入日期時間... ', vDate);
end;
2
3
4
5
6
運行結果
# 3.39. InputBoxFloat
function InputBoxFloat(ATitle, ACaption: String; var AResult: Double): Boolean;
說明: 浮點數輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxFloat函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
AResult | 輸入值變數 |
- 示例
var
vValue:double;
begin
vValue := 123.25;
DBFun.InputBoxFloat ('請輸入浮點數... ', vValue);
DBFun.InputBoxInt ('請輸入整數... ', vValue);
end;
2
3
4
5
6
7
運行結果
# 3.40. InputBoxInt
function InputBoxInt(ATitle, ACaption: String; var AResult: Integer): Boolean;
說明: 整數輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxInt函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
ACaption | 輸入值說明 |
AResult | 輸入值變數 |
- 示例
var
vValue:Integer;
begin
vValue := 123;
DBFun.InputBoxInt ('請輸入整數... ', vValue);
end;
2
3
4
5
6
運行結果
# 3.41. InputBoxMemo
function InputBoxMemo(ATitle, ACaption: String; var AResult: string): Boolean;
說明: 大文字輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxMemo函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
AResult | 輸入值變數 |
- 示例
var
vStr:string;
begin
vStr := '我是中國人,我驕傲,我自豪!';
DBFun.InputBoxMemo ('請輸入內容...',vStr);
end;
2
3
4
5
6
運行結果
# 3.42. InputBoxStr
function InputBoxStr(ATitle, ACaption: String; var AResult: string): Boolean;
說明: 字串輸入對話方塊 返回值: 布爾Boolean型別
- InputBoxStr函式語法中各部分說明
部分 | 說明 |
---|---|
ATitle | 對話方塊標題 |
AResult | 輸入值變數 |
- 示例
var
vStr:string;
begin
vStr := '您好!';
DBFun.InputBoxStr('請輸入字串...',vStr);
end;
2
3
4
5
6
運行結果
# 3.43. IsDBRep
function IsDBRep(QSQL: string; QKeyName: string; QKeyValue: string; QDBName: String = ''): Boolean;
說明: 校驗重複值。 返回值: 布爾Boolean型別。
- IsDBRep函式語法中各部分說明
部分 | 說明 |
---|---|
QSQL | SQL語句字串 |
QKeyName | 校驗欄位名稱 |
QKeyValue | 校驗值 |
QDBName | 帳套名,可指定其它帳套 |
- 示例
Var
vSQL:string;
vKeyName:string;
vKeyValue:string;
Begin
//校驗客戶編號是否存在
vSQL:= 'SELECT FInterID,FCustCode,FCustName FROM Basic_Cust';
vKeyName:= 'FCustCode';
vKeyValue:= '01001';
If DBFun.IsDBRep (vSQL, vKeyName, vKeyValue) then
Begin
Showmessage('客戶編號 '+ vKeyValue +' 已經存在!');
End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3.44. NextMonth
Function NextMonth(ADateTime: Variant): string;
說明: 獲取指定日期下一個月第一天 返回值: 字元string型別
- NextMonth函式語法中各部分說明
部分 | 說明 |
---|---|
ADateTime | 指定的一個變體型別 |
- 示例
Var
vNextMonth:String;
Begin
vNextMonth:= DBFun.NextMonth ('2019-07-10');
end;
2
3
4
5
運行結果: 2019-08-01
# 3.45. OperateLog
function OperateLog(opeType: string;QNote: string=''): Boolean;
說明: 記錄操作日誌 返回值: 布爾Boolean型別
- 函式語法中各部分說明
部分 | 說明 |
---|---|
opeType | 操作型別 |
QNote | 操作具體內容 |
- 示例
procedure TMyHandler.tbDelOnClick(Sender: TObject);
var
tempVar:TArrayaString;
vResult:string;
begin
//通過提示對話方塊詢問使用者
if not dbfun.ShowConfirmDialogue('提示','確定刪除資料嗎?',295) then Abort();
//設定tempVar陣列長度
SetLength(tempVar,4);
//預存程序參數賦值,最後一個參數值為返回值
tempVar[0] := FThis.dts0.FieldByName('FInterID').AsString;
tempVar[1] := 'Delete';
tempVar[2] := '';
tempVar[3] := '';
//執行預存程序
vResult := DM.ExecProcedureR('sp_Basic_Item',tempVar);
if vResult ='OK'then
begin
//登記操作日誌
DBFun.OperateLog('刪除', FThis.dts0.FieldByName('FItemName').AsString);
Showmessage('刪除成功!');
end;
//重新整理目前窗體數據
FThis.CurrID := FThis.FCurrID;
//關閉目前窗體
FThis.Close;
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
# 3.46. ReturnValue
function ReturnValue(sSQL: String; iReturnType: Integer = 0): Variant;
說明: 根據SQL取值 返回值: 變體Variant型別
- ReturnValue函式語法中各部分說明
部分 | 說明 |
---|---|
sSQL | 指定一個SQL內容 |
iReturnType | iReturnType返回值型別 0:字元;1:整數;2:浮點;3:布爾;4日期 |
- 示例
var
vSQL:string;
v:variant;
begin
//獲取字元內容
v:= DM.ReturnValue (vSQL);
//獲取整數內容
v:= DM.ReturnValue (vSQL,1);
//獲浮點內容
v:= DM.ReturnValue (vSQL,2);
end;
2
3
4
5
6
7
8
9
10
11
# 3.47. RoundToCH
function RoundToCH(const AValue: Double; const ADigit: Integer): Double;
說明: 四捨五入函式 返回值: 雙精度Double型別
- 函式語法中各部分說明
部分 | 說明 |
---|---|
AValue | 指定一個Double型別的數值 |
ADigit | 指定一個小數點保留位數 |
- 示例
Var
vValue: Double;
Begin
vValue:= DBFun.RoundToCH (12.357,2);
end;
2
3
4
5
運行結果: 12.36
# 3.48. SelectedRecordCount
function SelectedRecordCount(ADBGridView: TcxGridDBTableView): Integer;
說明: 獲取cxGrid表格被選中的記錄數 返回值: 整數Integer型別
- SelectedRecordCount函式語法中各部分說明
部分 | 說明 |
---|---|
ADBGridView | 指定一個cxGrid數據表格 |
- 示例
Var
iSelectedCount: Integer;
begin
//獲取表格tbGriddts0選中的記錄數
iSelectedCount := DBFUN.SelectedRecordCount(FThis.tbGriddts0);
if iSelectedCount = 0 then
begin
DBFun.ShowInformationDialogue('提示', '請先選擇一條記錄!',295);
Exit;
end;
end;
2
3
4
5
6
7
8
9
10
11
# 3.49. SelectedRecordValue
function SelectedRecordValue(ADBGridView: TcxGridDBTableView; ACount, AKeyFieldIdx: Integer): Variant;
說明: 根據cxGrid表格列座標獲取列值 返回值: 變體Variant型別
- SelectedRecordValue函式語法中各部分說明
部分 | 說明 |
---|---|
ADBGridView | 指定一個cxGrid數據表格 |
ACount | 列行號 |
AKeyFieldIdx | 列索引號 |
- 示例
//這是一個在表格中批次列印的例子
procedure TMyHandler.tbPrintOnClick(Sender: TObject);
var
vBaseEdit:TBaseEdit;
iSelectedCount, KeyFieldIdx: Integer;
QKeyField: string;
vDataID: Variant;
i,j:integer;
vSQL:string;
vProductWeightOflength:string;
begin
//獲取表格tbGriddts0選中的記錄數
iSelectedCount := DBFUN.SelectedRecordCount(FThis.tbGriddts0);
if iSelectedCount = 0 then
begin
DBFun.ShowInformationDialogue('提示', '請先選擇一條記錄!',295);
Exit;
end;
//建立窗體
vBaseEdit := ShowEdit('ManMoEdit','');
QKeyField := 'FInterID';
//獲取關鍵欄位的索引號
KeyFieldIdx := FThis.tbGriddts0.GetColumnByFieldName(QKeyField).Index;
for i := 0 to iSelectedCount - 1 do
begin
//獲取指定列的值
vDataID := DBFUN.SelectedRecordValue(FThis.tbGriddts0,i,KeyFieldIdx);
//打開窗體數據
vBaseEdit.CurrID := vDataID;
//呼叫窗體列印事件
vBaseEdit.DoPrint;
end;
//釋放窗體
vBaseEdit.free;
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
32
33
34
35
# 3.50. ShowConfirmDialogue
function ShowConfirmDialogue(const Caption, Text: string; iWidth: Integer = 295): Boolean; overload;
說明: 顯示確認對話方塊 返回值: 布爾Boolean型別
- ShowConfirmDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 對話方塊內容 |
iWidth | 對話方塊寬度 |
- 示例
begin
if DBFUN.ShowConfirmDialogue('請確認','確認刪除資料嗎?',256) then
begin
…
end;
end;
2
3
4
5
6
運行結果
# 3.51. ShowConfirmDialogue
function ShowConfirmDialogue(const Caption, Text, OkCaption, NoCaption: string; iWidth: Integer = 295): Integer; overload;
說明: 多按鈕可自定按鈕標籤對話方塊 返回值: 整數Integer型別
- ShowConfirmDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 對話方塊內容 |
OkCaption | OK按鈕標籤,可自定義按鈕標籤 |
NoCaption | No按鈕標籤,可自定義按鈕標籤 |
iWidth | 對話方塊寬度 |
- 示例
Var
i:integer;
begin
i := DBFUN.ShowConfirmDialogue('提示','請選擇訊息發送型別?', '微信', '郵件',256);
if i = 1 then
//程式碼片段
else
//程式碼片段
end;
end;
2
3
4
5
6
7
8
9
10
運行結果
# 3.52. ShowErrorDialogue
function ShowErrorDialogue(const Caption, Text: string; iWidth: Integer = 295): Boolean;
說明: 錯誤訊息提示對話方塊 返回值: 布爾Boolean型別
- ShowErrorDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 對話方塊內容 |
iWidth | 對話方塊寬度 |
- 示例
var
begin
DBFUN. ShowWarningDialogue ('錯誤','數據格式不正確!',256);
end;
2
3
4
運行結果
# 3.53. ShowInformationDialogue
function ShowInformationDialogue(const Caption, Text: string; iWidth: Integer = 295): Boolean;
說明: 訊息提示對話方塊 返回值: 布爾Boolean型別
- ShowInformationDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 對話方塊內容 |
iWidth | 對話方塊寬度 |
- 示例
var
begin
DBFUN. ShowInformationDialogue ('提示','刪除成功!',256);
end;
2
3
4
運行結果
# 3.54. ShowInputDialogue
function ShowInputDialogue(const Caption, Text: string; DefaultContent: string = ''): string;
說明: 文字輸入對話方塊 返回值: 字元string型別
- ShowInputDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 內容說明 |
DefaultContent | 預設值 |
- 示例
Var
vStr:string;
begin
vStr := DBFUN.ShowInputDialogue('請輸入','員工編號','001');
end;
2
3
4
5
運行結果
# 3.55. ShowWarningDialogue
function ShowWarningDialogue(const Caption, Text: string; iWidth: Integer = 295): Boolean;
說明: 警告訊息提示對話方塊 返回值: 布爾Boolean型別
- ShowWarningDialogue函式語法中各部分說明
部分 | 說明 |
---|---|
Caption | 對話方塊標題 |
Text | 對話方塊內容 |
iWidth | 對話方塊寬度 |
- 示例
var
begin
DBFUN. ShowWarningDialogue ('警告','讀取的檔案不正確!',256);
end;
2
3
4
運行結果
# 4. Wechat類 (微信公眾號訊息推送函式)
本章節的函式在使用時需以Wechat.
開頭。
# 4.1. SendArticleMessage
function SendArticleMessage(const AccountName, AOpenID: string; AContent: TArrayaString): Boolean;
說明: 發送圖文資訊 返回值: 布爾Boolean型別
- SendArticleMessage函式語法中各部分說明
部分 | 說明 |
---|---|
AccountName | 微信公眾號 |
AOpenID | 微信使用者AOpenID,OpenID為微信使用者唯一標識ID |
AContent | 微信訊息內容 |
- 示例
Begin
//呼叫方式
Wechat.SendArticleMessage('test','oxCHX6X4rjxj-TEStyhPmkNILNp9A','ArrayString');
End;
2
3
4
# 4.2. SendCustomMessage
function SendCustomMessage(const AccountName, AOpenID, AContent: string): Boolean;
說明: 發送文字訊息 返回值: 布爾Boolean型別
- SendCustomMessage函式語法中各部分說明
部分 | 說明 |
---|---|
AccountName | 微信公眾號 |
AOpenID | 微信使用者AOpenID,OpenID為微信使用者唯一標識ID |
AContent | 微信訊息內容 |
- 示例
Begin
//呼叫方式
Wechat.SendCustomMessage('test','oxCHX6X4rjxj-TEStyhPmkNILNp9A','你好!');
End;
2
3
4
# 4.3. SendTemplateMessage
function SendTemplateMessage(const AccountName, AJsonContent: string): Boolean;
說明: 發送模板訊息 返回值: 布爾Boolean型別
- SendTemplateMessage函式語法中各部分說明
部分 | 說明 |
---|---|
AccountName | 微信公眾號 |
AJsonContent | Json格式化字串,格式請參考https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html (opens new window) |
- 示例
Begin
//呼叫方式
Wechat.SendTemplateMessage('test','JsonContent');
End;
2
3
4
# 4.4. SendWechatMsg
function SendWechatMsg(const AccountName, AOpenID, ATemplateID, AContent: string): Boolean;
說明: 發送模板訊息 返回值: 布爾Boolean型別
- SendWechatMsg函式語法中各部分說明
部分 | 說明 |
---|---|
AccountName | 微信公眾號 |
AOpenID | 微信使用者AOpenID,OpenID為微信使用者唯一標識ID |
ATemplateID | 微信訊息模板ID |
AContent | 微信訊息內容 |
- 示例
Begin
//呼叫方式
Wechat.SendWechatMsg('test','oxCHX6X4rjxj-TEStyhPmkNILNp9A','templateID','TemplateContent');
End;
2
3
4
# 5. PaxScript註冊函式
# 5.1. BIG2cn
function BIG2cn(BigStr: string): string;
說明: 繁體字轉簡體字 返回值: 字元string型別
- BIG2cn函式語法中各部分說明
部分 | 說明 |
---|---|
BigStr | 指定一個繁體字串 |
- 示例
//簡體字換為繁體字
begin
BIG2cn('我是中國人!');
end;
2
3
4
運行結果
# 5.2. Cn2Big
function Cn2Big(CnStr: string): string;
說明: 簡體字轉繁體字 返回值: 字元string型別
- Cn2Big函式語法中各部分說明
部分 | 說明 |
---|---|
CnStr | 指定一個簡體字串 |
- 示例
//簡體字換為繁體字
begin
Cn2Big('我是中國人!');
end;
2
3
4
運行結果
# 5.3. DigitToEn
function DigitToEn(strDigits: String; intRMB: Boolean): String;
說明: 數字轉換為英文 返回值: 字元string型別
- DigitToEn函式語法中各部分說明
部分 | 說明 |
---|---|
strDigits | 指定一個小寫數字串 |
intRMB | 是否轉換為英文金額顯示 |
- 示例
//數字轉換為英文
var
s:string;
begin
s := DigitToEn('10023.8',true);
end;
2
3
4
5
6
運行結果 TEN THOUSAND TWENTY-THREE YUANS AND EIGHT CENTS ONLY
# 5.4. GetChinaMoney
function GetChinaMoney(small: Variant): string;
說明: 小數轉換為中國大寫金額 返回值: 字元string型別
- GetChinaMoney函式語法中各部分說明
部分 | 說明 |
---|---|
small | 指定一個小寫數字金額 |
- 示例
//簡體字換為繁體字
var
s:string;
begin
s := GetChinaMoney('123.58');
end;
2
3
4
5
6
運行結果 壹佰貳拾叁元伍角捌分
# 5.5. GetHostName
function GetHostName: string;
說明: 獲取計算機名稱 返回值: 字元string型別
- 示例
var
vHostName:string;
Begin
vHostName := GetHostName;
End;
2
3
4
5
運行結果: SCZHF-PC
# 5.6. GetHostIP
function GetHostIP: String;
說明: 獲取計算機IP地址 返回值: 字元String型別
- 示例 var
vHostIP:string;
Begin
vHostIP:= GetHostIP;
End;
2
3
4
運行結果: 192.168.1.100
# 5.7. GetMacAddress
function GetMacAddress: string;
說明: 獲取計算機網絡卡地址 返回值: 字元String型別
- 示例
var
vHostMacAddress:string;
Begin
vHostMacAddress:= GetMacAddress;
End;
2
3
4
5
運行結果: 01:1A:1B:EF:0A:BC
# 5.8. GetPropValue
function GetPropValue(QControl:TComponent; QControlProp: string): Variant;
說明: 獲取控制元件屬性值 返回值: 變體Variant 型別
- GetPropValue函式語法中各部分說明
部分 | 說明 |
---|---|
QControl | 需要獲取屬性的控制元件 |
QControlProp | 控制元件屬性名稱 |
- 示例
var
vPropValue:variant;
begin
//獲取窗體FThis.dbdts0FItemName對象的Name名稱
vPropValue := GetPropValue(FThis.dbdts0FItemName,'Name');
Showmessage(vPropValue);
end;
2
3
4
5
6
7
# 5.9. MACToStr
function MACToStr(ByteArr: PByte; Len: Integer): String;
說明: MAC地址轉字串 返回值: 字元Srting型別
- MACToStr函式語法中各部分說明
部分 | 說明 |
---|---|
ByteArr | MAC地址 |
Len | 長度 |
- 示例
# 5.10. NetHttpGet
function NetHttpGet(Qurl: string): string;
說明: 獲取Http請求 返回值: 字元string型別
- NetHttpGet函式語法中各部分說明
部分 | 說明 |
---|---|
Qurl | Http 內容 |
- 示例
var
vValue:string;
begin
//獲取一個64位唯一ID
vValue := NetHttpGet('http://192.168.1.100:8809/system/newid');
DBFun.ShowInformationDialogue('提示',vValue,500) ;
end;
2
3
4
5
6
7
運行結果
# 5.11. NetHttpPost
function NetHttpPost(Qurl, QDataString: string): string;
說明: 提交Http請求 返回值: 字元string型別
- NetHttpPost函式語法中各部分說明
部分 | 說明 |
---|---|
Qurl | Http 內容 |
- 示例
//通過RestAPI發送一封郵件
http://192.168.1.100:8809/rest/email/sendmail?subject=NewMail&email=youname@yourdomain.com&content= Welcome to use IsoFace series products&attachment=
2
運行結果 收到新郵件
# 6. 模板窗體打開方式函式
# 6.1. ExpExcel
function ExpExcel(AComponent:TComponent;Const ACaption,ATitle:String;Const E:TDetailsExportEvent = nil):Boolean;
說明: 打開表格導出的對話方塊 返回值: 布爾Boolean型別
- ExpExcel函式語法中各部分說明
部分 | 說明 |
---|---|
AComponent | 要導出的數據表元件名稱,在系統中名稱通常為FThis.tbGriddtsx |
ACaption | 對話方塊標題欄顯示的名稱 |
ATitle | 導出的表格檔案的名稱 |
- 示例
begin
//指定的數據的序號,請檢視功能表中的設計-模組設計-窗體設計中指定的序號,比如數據集的序號為1,則此處指定為tbGriddts1。
ExpExcel(FThis.tbGriddts1,'導出客戶資料','客戶資料',nil);
end;
2
3
4
運行結果
# 6.2. InputNumber
function InputNumber(AField: TField; ACantion: string = ''): Boolean;
說明: 數字輸入小鍵盤 返回值: 布爾Boolean型別
- InputNumber函式語法中各部分說明
部分 | 說明 |
---|---|
AField | 指定數據集欄位,數值型的欄位 |
ACantion | 小鍵盤標籤 |
- 示例
Begin
InputNumber(FThis.dts0.FieldByName('FInterID'),'請輸入一個數字');
End;
2
3
運行結果
# 6.3. InputNumberR
function InputNumberR(var vStr: string; ACantion: string = ''): Boolean;
說明: 字元型變數輸入小鍵盤 返回值: 布爾Boolean型別
- 函式語法中各部分說明
部分 | 說明 |
---|---|
vStr | 一個字元型變數 |
ACantion | 小鍵盤標籤 |
- 示例
Var
vStr:String;
Begin
//帶變數
vStr := '1234';
InputNumberR(vStr,'請輸入字串');
End;
2
3
4
5
6
7
運行結果
# 6.4. InputNumberStr
function InputNumberStr(AField: TField; ACantion: string = ''): Boolean;
說明: 字串輸入小鍵盤 返回值: 布爾Boolean型別
- InputNumberStr函式語法中各部分說明
部分 | 說明 |
---|---|
AField | 指定數據集欄位,欄位需要是字元型的 |
ACantion | 小鍵盤標籤 |
- 示例
Begin
//字元型欄位
InputNumberStr (FThis.dts0.FieldByName('FItemCode'),'請輸入字串');
End;
2
3
4
運行結果
# 6.5. MiniWebPage
function MiniWebPage(AUrl: String; ACaption: string = ''): TBaseWebPage;
說明: 以彈窗方式打開網頁瀏覽頁面。 返回值: 返回TBaseWebPage對象。
- 函式語法中各部分說明
部分 | 說明 |
---|---|
AUrl | 打開視窗預設載入的網頁地址 |
ACaption | 打開視窗的標題 |
- 示例:
begin
MiniWebPage('http://192.168.0.113:8080','主頁');
end.
2
3
# 6.6. ShowDBTreeView
function ShowDBTreeView(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false): TBaseDBTreeView;
說明: 樹型模板打開方式 返回值: TBaseDBTreeView對像
- 函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
- 示例
Begin
//打開客戶分類窗體,以下三種方式都是可以的,結果一樣。
ShowDBTreeView('CustGroupList');
ShowDBTreeView('CustGroupList', '客戶分類');
ShowDBTreeView('CustGroupList', '客戶分類',false);
End;
2
3
4
5
6
# 6.7. ShowEdit
function ShowEdit(QModuleCode: string; QKeyID: string; QContextForm: TModuleFormBase = nil; QModuleCaption: string = '';QbMulti: Boolean = false; QbFree: Boolean = false): TBaseEdit;
說明: 編輯模板的打開方式 返回值: TBaseEdit對像
- ShowEdit函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QKeyID | 主鍵值 |
QContextForm | 上文窗體 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QbFree | 關閉窗體時是否釋放窗體 |
- 示例
Begin
//打開客戶資料編輯窗體
ShowEdit ('CustEdit',FThis.dts1.FieldByName('FInterID').asString,FThis);
End;
2
3
4
# 6.8. ShowEditList
function ShowEditList(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false): TBaseEditList;
說明: 列表編輯模板打開方式 返回值: TBaseEditList 對像
- ShowEditList函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QForm | 上文窗體 |
- 示例
Begin
//打開一個幣種資料列表編輯窗體
ShowEditList('CurrencyList','幣種資料');
End;
2
3
4
# 6.9. ShowEditP
function ShowEditP(QModuleCode: string; QKeyID: string; QParams: TStringList = nil; QContextForm: TModuleFormBase = nil;QModuleCaption: string = ''; QbMulti: Boolean = false; QbFree: Boolean = false): TBaseEdit;
說明: 帶參數編輯模板打開方式 返回值: TBaseEdit對像
- 函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QKeyID | 主鍵值 |
QParams | 窗體參數值,可預定一些參數到窗體中,供指令碼使用 |
QContextForm | 上文窗體 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QbFree | 關閉窗體時是否釋放窗體 |
- 示例
var
vStringList:TStringList;
begin
//建立參數對像
vStringList:=TStringList.Create;
vStringList.CommaText := 'A=1,B=2,C=3,D=4';
try
ShowEditP('CustEdit','',vStringList);
finally
vStringList.free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
- 示例解讀:
在CustEdit模組設計中,將欄位資訊的一個欄位[預設值型別]設定成VAR_PARAMS,然後[預設值]設定成A,當數據集新增記錄的時候,欄位值就會讀取參數中A的值1。 當然傳給窗體的參數可以在指令碼中靈活使用,可以根據不同使用者設定不同的參數值。
# 6.10. ShowGroupByList
function ShowGroupByList(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false): TBaseGroupTJ;
說明: 數據統計模板打開方式 返回值: TBaseGroupTJ對像
- 函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
- 示例
Begin
//打開交叉報表
ShowGroupByList (' ReportStockBillMaster','化工料生產領用匯總表');
End;
2
3
4
# 6.11. ShowHandWrite
function ShowHandWrite(QData:string): string;
說明: 手寫輸入法 返回值: 字串String型別
- ShowHandWrite函式語法中各部分說明
部分 | 說明 |
---|---|
QData | 一個預設的字串,可以是原文字 |
- 示例
Var
vStr:String;
Begin
//顯示手寫板功能
vStr := ShowHandWrite ('');
End;
2
3
4
5
6
運行效果:
# 6.12. ShowHomePage
function ShowHomePage(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false): TBaseHomePage;
說明: 主頁模板打開方式 返回值: TBaseHomePage
- 函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
- 示例
Begin
//打開主頁
ShowHomePage(' HomePage_001','主頁');
End;
2
3
4
# 6.13. ShowImport
function ShowImport(QForm:TModuleFormBase;QTargetDataSet: TSQModuleDataSet; QModuleCode: string; QModuleCaption: string = ''; QSQLFilter:
string = ''; QSourceDataSetIndex: Integer = 0; QSourceField: string = '';QTargetField: string = ''; QbFree: Boolean =
false; QbSelectOnly: Boolean = false; QFieldChanging: Boolean = false;): Boolean;
2
3
說明: 匯入模板窗體打開方式 返回值: 布爾Boolean型別
- ShowImport函式語法中各部分說明
部分 | 說明 |
---|---|
QForm | 上文窗體 |
QTargetDataSet | 目標數據集(需要接收數據的數據集) |
QModuleCode | 匯入窗體模板程式碼 |
QModuleCaption | 匯入窗體模板名稱 |
QSQLFilter | SQL過濾條件 |
QSourceDataSetIndex | 源數據集索引號 |
QSourceField | 源數據集欄位 |
QTargetField | 目數據集標欄位 |
QbSelectOnly | 是否單選,為Ture的時候,匯入窗體只能匯入一條數據到目標窗體 |
QbFree | 關閉匯入窗體是否釋放窗體 |
QFieldChanging | 是否觸發欄位改變事件 |
- 示例
Begin
//打開選擇工序匯入窗體,工序匯入到dts0數據集中。
ShowImport(FThis, FThis.dts0, 'SelectProcess', '選擇工序', '', 0, '', '', true, true, false);
End;
2
3
4
# 6.14. ShowImportR
function ShowImportR(QModuleCode: String; QModuleCaption: string = ''; QDataSetNum: Integer = 0;QForm: TModuleFormBase = nil; QbFree: Boolean = false; QSQLFilter: String = ''): Boolean;
說明: 匯入模板窗體打開方式(返回主鍵字串) 返回值: 布爾Boolean型別
- ShowImportR函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 匯入窗體模板程式碼 |
QModuleCaption | 匯入窗體模板名稱 |
QDataSetNum | 目標數據集索引號 |
QForm | 上文窗體 |
QSQLFilter | SQL過濾條件 |
- 示例
procedure TMyHandler.tb0btnImportOutStockOnClick(Sender: TObject);
var
vStr:String;
vSQL1,vSQL2,vSQL3:string;
sWhere:string;
vVariant:variant;
vInteger:integer;
begin
//讀取數據控制參數
vVariant := DBFUN.GetSQLValue('SELECT isnull(FParamValue,0) FROM Dict_ExtendParams WHERE FParamID = 117');
vInteger := vVariant;
ShowImportR('CLInvOutStockSelect','選擇成品出庫單',0,FThis,False);
vStr := FThis.TagString;
if vStr = '' then exit;
if VStr <> '' then
begin
vSQL1 := DBFUN.GetTransSQL('SQL_CLStockOutTOSalInvoiceMaster');
if vInteger=0 then
vSQL2 := DBFUN.GetTransSQL('SQL_CLStockOutTOSalInvoice')
else
vSQL2 := DBFUN.GetTransSQL('SQL_CLStockOutTOSalInvoiceEntry');
vSQL3 := DBFUN.GetTransSQL('SQL_CLStockOutTOSalInvoice');
vSQL1 := ForMat(vSQL1,['('+FThis.dts0.keyList+')']);
vSQL2 := ForMat(vSQL2,['('+FThis.dts0.keyList+')']);
vSQL3 := ForMat(vSQL3,['('+FThis.dts0.keyList+')']);
if DBFUN.ShowConfirmDialogue('提示','匯入會清空所有單據明細,請確認?',295) then
begin
FThis.dts1.First;
while not FThis.dts1.Eof do
begin
while not FThis.dts2.eof do
begin
FThis.dts2.Delete;
end;
FThis.dts1.Delete;
end;
FThis.TransSQLToDataSet(vSQL1,FThis.dts0,true);
FThis.TransSQLToDataSet(vSQL2,FThis.dts1,true);
FThis.TransSQLToDataSet(vSQL3,FThis.dts2,true);
FThis.TagString :='';
FThis.dts1.First;
end;
end;
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 6.15. ShowList
function ShowList(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false;QForm: TModuleFormBase = nil): TBaseList;
說明: 列表模板打開方式 返回值: TBaseList對像
- ShowList函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QForm | 上文窗體 |
- 示例
Begin
//打開一個客戶列表窗體
ShowList('CustList','客戶列表');
End;
2
3
4
# 6.16. ShowPivotGrid
function ShowPivotGrid(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false): TBasePivotGrid;
說明: 交叉報表模板打開方式 返回值: TBasePivotGrid
- ShowPivotGrid函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼,模組設計中指定唯一模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
- 示例
Begin
//打開交叉報表
ShowPivotGrid('ReportSMPMaterialBillPivot','料單耗用表');
End;
2
3
4
# 6.17. ShowPlayer
function ShowPlayer(ACaption: string; AUrl: string = ''; ASimple:Boolean=false):TBasePlayer;
說明: 彈窗式打開視訊播放頁面 返回值: TBasePlayer對像
- ShowPlayer函式語法中各部分說明
部分 | 說明 |
---|---|
ACaption | 頁面顯示的標題 |
AUrl | 視訊播放的地址 |
ASimple | 是否啟用簡單模式,在簡單模式中視窗僅顯示視訊不顯示視訊控制區的按鈕 |
- 示例
begin
//ShowPlayer('現場直播','rtmp://192.168.0.113/live/001');
ShowPlayer('視訊播放','http://192.168.0.113:8080/sample.mp4');
end.
2
3
4
# 6.18. ShowPopup
function ShowPopup(QModuleCode: string; QKeyID: string; QContextForm: TModuleFormBase = nil;QModuleCaption: string = '';
QbMulti: Boolean = false; QbFree: Boolean = false): TBasePopup;
2
說明: 彈窗式編輯模板的打開方式 返回值: TBasePopup對像
- ShowPopup函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QKeyID | 主鍵值 |
QContextForm | 上文窗體 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QbFree | 關閉窗體時是否釋放窗體 |
- 示例
Begin
//打開客戶資料編輯窗體
ShowPopup('CustEdit',FThis.dts1.FieldByName('FInterID').asString,FThis);
End;
2
3
4
# 6.19. ShowSPList
function ShowSPList(QModuleCode: String; QModuleCaption: string = ''; QbMulti: Boolean = false; QForm: TModuleFormBase = nil): TBaseSPList;
說明: 預存程序模板列表打開方式 返回值: TBaseSPList對像
- ShowSPList函式語法中各部分說明
部分 | 說明 |
---|---|
QModuleCode | 模組程式碼 |
QModuleCaption | 模組標題,可以指定窗體打開時候的標籤名稱 |
QbMulti | 窗體是否可以多開 |
QForm | 上文窗體 |
- 示例
Begin
//打開預存程序模板列表。
ShowSPList(' ReportInvStockSFC ','化工料收發存彙總表');
End;
2
3
4
- 示例解讀:
預存程序模板列表主要是可以自由構建SQL內容,可以將數據集查詢條件做為參數融入到SQL語句中,而不是象列表模板一樣,將數據集查詢條件自己拼接作為Where條件內容使用。 預存程序列表模板SQL典型內容:
DECLARE @FDate1 datetime, @FDate2 datetime, @FBillID int, @FStockID int, @FItemCode varchar(30), @FBatchNO varchar(50) SELECT @FDate1 = :FDate1, @FDate2 = :FDate2, @FStockID = :FStockID, @FItemCode = :FItemCode,@FBatchNO = :FBatchNO
1
2
3
4
5
6
7
8
9其中:FDate1,:FDate2,:FStockID,:FItemCode,:FBatchNO 都是指查詢條件,模板執行時,系統會自動解析這些參數,獲取到查詢條件對應的查詢內容。
# 6.20. ShowWebPage
function ShowWebPage(AUrl: String; ACaption: string = ''; QbMulti: Boolean = false): TBaseWebPage;
說明: 在頁面中打開網頁。 返回值: TBaseWebPage對象。
- ShowWebPage函式語法中各部分說明
部分 | 說明 |
---|---|
AUrl | 網頁地址 |
ACaption | 頁面標題 |
QbMulti | 是否啟用多頁面模式,即系統中該模組只允許在一個網頁頁面標籤中使用 |
- 示例:
begin
ShowWebPage('http://192.168.0.113:8805','EMS',True);
end.
2
3
# 7. 全域性類函式
# 7.1. AppInfo
function AppInfo: TAppInfo;
說明: 平臺資訊類(平臺及中介軟體連線資訊) 返回值: TAppInfo類
- 示例
Begin
//讀取程式名稱
AppInfo.AppName;
End;
2
3
4
# 7.2. CommonDM
function CommonDM: TCommonModule;
說明: 全域性常用數據類(目前只用來做全域性多語言使用) 返回值: TCommonModule類
- 示例
Begin
//讀取S_ButtonConfrim的多語言內容
CommonDM. GetLangString('S_ButtonConfrim');
End;
2
3
4
# 7.3. Company
function Company: TCompany;
說明: 公司資料類(公司資訊) 返回值: TCompany類
- 示例
Begin
//獲取公司繁體名稱
Company. CompanyNameTW;
End;
2
3
4
# 7.4. InvSystemParams
function InvSystemParams: TInvSystemParams;
說明: 存貨覈算參數類(存貨覈算時單價和金額小數點位數、覈算方式等資訊) 返回值: TInvSystemParams類
- 示例
Begin
//讀取存貨覈算金額小數點保留位數
InvSystemParams. AmountDecLen;
End;
2
3
4
# 7.5. SystemParams
function SystemParams: TSystemParams;
說明: 系統參數類(會計期間、單價和金額小數點位數等資訊) 返回值: TSystemParams類
- 示例
Begin
//讀取目前期間年份
SystemParams. CurrentYear;
End;
2
3
4
# 7.6. UserInfo
function UserInfo: TUserInfo;
說明: 使用者資訊類(操作員屬性) **返回值:**TUserInfo類
- 示例
Begin
//調取使用者名稱稱
UserInfo.UserName;
//調取使用者管理員標識
UserInfo.IsAdmin;
End;
2
3
4
5
6