愛招飛幫助手冊 愛招飛幫助手冊
  • 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
  • PinToo幫助主頁
  • 學習手冊

    • 基本入門

    • 功能介紹

    • 控制元件說明

    • 功能用法

    • 專用模板

    • 開發流程

      • 紡織印染業ERP設計實務
        • 1. 系統組成
        • 2. 主頁
          • 2.1. 功能簡述
          • 2.2. 窗體設定
          • 2.3. 控制元件設定
          • 2.4. 程式設計
          • 2.5. 多語言設定
          • 2.6. 運行結果
        • 3. 公司資料-單筆數據表單
          • 3.1. 功能簡述
          • 3.2. 窗體設定
          • 3.3. 控制元件設定
          • 3.4. 程式設計
          • 3.5. 多語言設定
          • 3.6. 運行結果
        • 4. 客戶資料查詢-多筆數據表單
          • 4.1. 功能簡述
          • 4.2. 窗體設定
          • 4.3. 控制元件設定
          • 4.4. 程式設計
          • 4.5. 多語言設定
          • 4.6. 運行結果
        • 5. 銷售訂單編輯-多筆數據主從表單
          • 5.1. 功能簡述
          • 5.2. 窗體設定
          • 5.3. 控制元件設定
          • 5.4. 程式設計
          • 5.5. 多語言設定
          • 5.6. 報表設定
          • 5.7. 運行結果
    • 函式程式

  • 開發手冊

目录

紡織印染業ERP設計實務

# PinToo 紡織印染業ERP設計實務

  該文件將指導實現在PinToo中的單據相關功能。本次我們將在PinToo中實現業務系統的功能。

# 1. 系統組成

  以下圖片描述本系統的模組組成,其中公司資料、客戶資料以及布種資料為對應的基礎資料,銷售訂單為引用以上基礎資料產生的單據。除公司資料外,其他的每個模組均包含查詢頁面以及編輯頁面。銷售訂單中還包括列印的相關設定內容。

  本系統主要實現的功能為在建立公司資料、客戶資料、布種資料等基礎資料后,實現銷售訂單的單據的新增、編輯、審覈等相關單據功能,並實現單據的列印。

# 2. 主頁

  點選PinToo設計器左上角的按鈕打開選項欄,選擇左側的模組設計。

  在打開的界面中點選新增,在彈出的視窗中輸入模組資訊,如下圖所示,點選儲存。

  儲存完成後,選擇剛才建立的模組,點選上方的設計按鈕進入至設計頁面。

  主頁頁面,其中主要包含主頁顯示的相關內容。

# 2.1. 功能簡述

  主頁頁面將需要使用到的功能以功能表的形式展現出來,通過與各個對應的模組對接鏈接,點選功能圖示打開對應的功能界面。

# 2.2. 窗體設定

屬性 取值 說明
Height 800 設定視窗控制元件的高度
Width 400 設定視窗控制元件的寬度

# 2.3. 控制元件設定

  各結構控制元件說明如下。

控制元件名稱 控制元件型別 說明
fxLayout1 TfxLayout 佈局控制元件,用於對整個佈局進行居中控制
Align:Center
Height:800
Width:400
fxRectangle2 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Client
fxRectangle1 TfxRectangle 方框控制元件,作為標題展示使用
Align:Top
fxLabel1 TfxLabel 文字標題控制元件
Align:Client
StyledSettings:所有屬性要全部清空設定為False
Text:愛招飛演示系統
TextSettings.FontColor:#FF515151
TextSettings.Font.Size:24
TextSettings.Font.Style.fsBold:True
TextSettings.HorzAlign:True
fxShadowEffect1 TfxShadowEffect 陰影佈局控制元件,為fxRectangle1提供陰影效果控制
Opactiy:0.6
btnCompany TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.AlgnType:aTop
ButtonType.Text:公司資料
ButtonType.TextSettings.FontColor:#FF666666
Height:140
Width:120
fxShadowEffect2 TfxShadowEffect 陰影佈局控制元件,為btnCompany提供陰影效果控制
Opactiy:0.6
btnCust TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.AlgnType:aTop
ButtonType.Text:客戶資料
ButtonType.TextSettings.FontColor:#FF666666
Height:140
Width:120
fxShadowEffect3 TfxShadowEffect 陰影佈局控制元件,為btnCust提供陰影效果控制
Opactiy:0.6
btnItem TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.AlgnType:aTop
ButtonType.Text:布種資料
ButtonType.TextSettings.FontColor:#FF666666
Height:140
Width:120
fxShadowEffect4 TfxShadowEffect 陰影佈局控制元件,為btnItem提供陰影效果控制
Opactiy:0.6
btnSalOrder TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.AlgnType:aTop
ButtonType.Text:銷售訂單
ButtonType.TextSettings.FontColor:#FF666666
Height:140
Width:120
fxShadowEffect5 TfxShadowEffect 陰影佈局控制元件,為btnSalOrder提供陰影效果控制
Opactiy:0.6
fxTabControl1 TfxTabControl 頁面佈局控制元件,位於底部位置
Align:MostBottomTabPosition:Bottom

  其中fxTabControl1雙擊可打開頁面編輯器,新增五個專案。分別選擇每個標籤頁專案,修改Text屬性為對應的專案。

# 2.4. 程式設計

  • 初始設定:設定顯示初始化內容。
Begin
  //對底部的專案進行多語言翻譯
  fxTabControl1.Tabs[0].Text := self.GetMsgLang('TabItem1');
  fxTabControl1.Tabs[1].Text := self.GetMsgLang('TabItem2');
  fxTabControl1.Tabs[2].Text := self.GetMsgLang('TabItem3');
  fxTabControl1.Tabs[3].Text := self.GetMsgLang('TabItem4');
  fxTabControl1.Tabs[4].Text := self.GetMsgLang('TabItem5');
End.
1
2
3
4
5
6
7
8
  • btnCompanyOnClick:btnCompany的OnClick事件,打開公司資料主界面。
Procedure btnCompanyOnClick(Sender: TObject);
//打開公司資料主界面
var
  Page:  TfxRunFrame;
Begin
  Page := fxOpenFrameToPage('Company');
End;
1
2
3
4
5
6
7
  • btnCustOnClick:btnCust的OnClick事件,打開客戶資料界面。
Procedure btnCustOnClick(Sender: TObject);
//打開客戶資料界面
var
  Page:  TfxRunFrame;
Begin
  Page := fxOpenFrameToPage('CustList');
End;
1
2
3
4
5
6
7
  • btnItemOnClick:btnItem的OnClick時間,打開布種資料界面。
Procedure btnItemOnClick(Sender: TObject);
//打開布種資料界面
var
  Page:  TfxRunFrame;
Begin
  Page := fxOpenFrameToPage('ItemList');
End;
1
2
3
4
5
6
7
  • btnSalOrderOnClick:btnSalOrder的OnClick事件,打開銷售訂單查詢界面。
Procedure btnSalOrderOnClick(Sender: TObject);
//打開銷售訂單查詢界面
var
  Page:  TfxRunFrame;
Begin
  Page := fxOpenFrameToPage('SalOrderList');
End;
1
2
3
4
5
6
7

# 2.5. 多語言設定

  在程式設計界面,點選界面右下側的按鈕展開界面,點選左側與右側按鈕切換至窗體語言設定界面,在此界面中設定多語言的相關資訊。對於絕大部分顯示的字幕型別,都可以點選對應的控制元件項,然後點選上側的修改按鈕修改顯示的字幕型別。

  對於在程式中填寫的多語言專案,請使用Self.GetMsgLang()來設定。比如上面程式中設定的幾項多語言專案:

  //對底部的專案進行多語言翻譯
  fxTabControl1.Tabs[0].Text := self.GetMsgLang('TabItem1');
  fxTabControl1.Tabs[1].Text := self.GetMsgLang('TabItem2');
  fxTabControl1.Tabs[2].Text := self.GetMsgLang('TabItem3');
  fxTabControl1.Tabs[3].Text := self.GetMsgLang('TabItem4');
  fxTabControl1.Tabs[4].Text := self.GetMsgLang('TabItem5');
1
2
3
4
5
6

  填寫完成後,在窗體語言界面,點選下側的MsgLang,在此頁面中新增標題資訊。

# 2.6. 運行結果

# 3. 公司資料-單筆數據表單

  點選PinToo設計器左上角的按鈕打開選項欄,選擇左側的界面設定。

  在打開的界面中點選新增,在彈出的視窗中輸入模組資訊,如下圖所示,點選儲存。

  儲存完成後,選擇剛才建立的模組,點選上方的設計按鈕進入至設計頁面。

  公司資料界面用於對公司資料進行編輯。

# 3.1. 功能簡述

  公司資料用於對公司資料的內容進行編輯,此頁面中包含了單筆數據的表單設計模式,資料庫圖片的展示與引用,圖片的對話方塊引入模式的設計說明。

# 3.2. 窗體設定

屬性 取值 說明
Height 800 設定視窗控制元件的高度
Width 400 設定視窗控制元件的寬度

# 3.3. 控制元件設定

  • 控制元件說明
控制元件名稱 控制元件型別 說明
fxLayout1 TfxLayout 佈局控制元件,用於對整個佈局進行居中控制
Align:Center
Height:800
Width:400
fxRectangle2 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Client
fxRectangle1 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Bottom
Height:40
fxShadowEffect1 TfxShadowEffect 陰影佈局控制元件,為fxRectangle1提供陰影效果控制
Opactiy:0.6
btnEdit TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:修改
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
btnSave TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:儲存
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
fxListBox1 TfxListBox 列表佈局控制元件,雙擊新增9個ListBoxItem以及2個ListBoxGroupHeader
ListBoxGroupHeader1 TListBoxGroupHeader 組頭
StyledSettings:清除所有的屬性,均設定為False
Text:基本資訊
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:14
TextSettings.Font.Style.fsBold:True
ListBoxItem1 TListBoxItem 列表項,放置公司編號資訊
Height:40
fxLayout2 TfxLayout 佈局控制元件,用於對整個ListBoxItem佈局進行控制
Align:Client
fxLabel1 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:公司編號
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFCompanyID TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem2 TListBoxItem 列表項,放置公司代號資訊
Height:40
fxLayout3 TfxLayout 佈局控制元件,用於對整個ListBoxItem佈局進行控制
Align:Client
fxLabel2 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:公司代號
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFCompanyCode TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem3 TListBoxItem 列表項,放置簡體名稱資訊
Height:40
fxLayout4 TfxLayout 佈局控制元件,用於對整個ListBoxItem佈局進行控制
Align:Client
fxLabel3 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:簡體名稱
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFCompanyName TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem5 TListBoxItem 列表項,放置負責人資訊
Height:40
fxLabel4 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:負責人
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFContact TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem6 TListBoxItem 列表項,放置電話資訊
Height:40
fxLabel5 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:電話1
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFPhone1 TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem7 TListBoxItem 列表項,放置公司地址資訊
Height:40
fxLabel6 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:地址
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFCompanyAddr TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem8 TListBoxItem 列表項,放置開戶銀行資訊
Height:40
fxLabel7 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:開戶銀行
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFBank TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxItem9 TListBoxItem 列表項,放置開戶帳號資訊
Height:40
fxLabel8 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:開戶帳號
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Center
Width:80
edFContact TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Style.fsBold:True
ListBoxGroupHeader2 TListBoxGroupHeader 組頭
StyledSettings:清除所有的屬性,均設定為False
Text:公司圖示
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:14
TextSettings.Font.Style.fsBold:True
ListBoxItem4 TListBoxItem 列表項,放置公司圖示資訊
Height:40
imFCompanyLogo TfxImage 圖片顯示控制元件
Height:85
MarginWarpMode:Stretch
Width:85
btnUpload TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:相簿
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
btnClearPicture TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:清空
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
fxActionList1 TfxActionList 雙擊控制元件,打開動作列表,新增TakePhotoFromLibraryAction1
dts0 TfxRFDataSet 數據集控制元件

# 3.4. 程式設計

  此功能程式需要引用公共單元FMXMedia、FMXMediaLibrary。在程式設計頁面點選右下角的按鈕展開,點選左側或者右側按鈕切換至Uses Unit,在其中查詢FMXMedia、FMXMediaLibrary並勾選引用。

  • 初始設定:設定顯示初始化內容。
Begin
  dts0.Connection := fxdm.DBConnection;
  dts0.SQL.Text := 'SELECT * FROM Basic_Company';
  dts0.OpenData;
  OpenToControl;
  RefState(False);
End.
1
2
3
4
5
6
7
  • OpenToControl:數據資訊顯示在對應的控制元件中。
procedure OpenToControl;
//數據集資訊顯示在對應的控制元件中
var
  PicStream: TMemoryStream;
begin
  //記憶體流控制元件建立
  PicStream := TMemoryStream.Create;
  try
    //將數據集中讀取到的內容賦值給各控制元件
    edFCompanyID.Text := dts0.FieldByName('FCompanyID').AsString;
    edFCompanyCode.Text := dts0.FieldByName('FCompanyCode').AsString;
    edFCompanyName.Text := dts0.FieldByName('FCompanyName').AsString;
    //將數據集中的流讀取至記憶體中
    TBlobField(dts0.FieldByName('FCompanyLogo')).SaveToStream(PicStream);
    edFContact.Text := dts0.FieldByName('FContact').AsString;
    edFPhone1.Text := dts0.FieldByName('FPhone1').AsString;
    edFCompanyAddr.Text := dts0.FieldByName('FCompanyAddr').AsString;
    edFBank.Text := dts0.FieldByName('FBank').AsString;
    edFAccountNo.Text := dts0.FieldByName('FAccountNo').AsString;
    //從流中載入圖片
    imFCompanyLogo.Bitmap.LoadFromStream(PicStream);
   Finally
    //Except {ErrorMsg / RaiseMsg(Const Error:String)}
    PicStream.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
25
26
  • ControlToDB:將控制元件中顯示的內容儲存至數據集中。
//將控制元件中顯示的內容儲存至數據集中
procedure ControlToDB;
var
  PicStream: TMemoryStream;
begin
  //建立記憶體流
  PicStream := TMemoryStream.Create;
  try
    //將控制元件中獲取的值回傳給數據集並儲存
    dts0.Edit;
    dts0.FieldByName('FCompanyID').AsString := edFCompanyID.Text;
    dts0.FieldByName('FCompanyCode').AsString := edFCompanyCode.Text;
    dts0.FieldByName('FCompanyName').AsString := edFCompanyName.Text; 
    imFCompanyLogo.Bitmap.SaveToStream(PicStream);
    TBlobField(dts0.FieldByName('FCompanyLogo')).LoadFromStream(PicStream);
    dts0.FieldByName('FContact').AsString := edFContact.Text;
    dts0.FieldByName('FPhone1').AsString := edFPhone1.Text;
    dts0.FieldByName('FCompanyAddr').AsString := edFCompanyAddr.Text;
    dts0.FieldByName('FBank').AsString := edFBank.Text;
    dts0.FieldByName('FAccountNo').AsString := edFAccountNo.Text;
    dts0.Post;  
  Finally
  //Except {ErrorMsg / RaiseMsg(Const Error:String)}
    PicStream.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
25
26
  • RefState:重新整理單據的顯示狀態。
procedure RefState(ABool: Boolean);
//重新整理單據的顯示狀態
begin
  //設定為True時,處於瀏覽模式,大部分的按鈕將不啟用
  if ABool Then
  begin
    btnEdit.HitTest := False;
    btnSave.HitTest := True;
    edFCompanyID.HitTest := True;
    edFCompanyCode.HitTest := True;
    edFCompanyName.HitTest := True;
    btnUpload.HitTest := True;
    btnClearPicture.HitTest := True;
  End
  else
  //設定為False時,處於編輯模式,大部分的按鈕將啟用
  begin
    btnEdit.HitTest := True;
    btnSave.HitTest := False;
    edFCompanyID.HitTest := False;
    edFCompanyCode.HitTest := False;
    edFCompanyName.HitTest := False;
    btnUpload.HitTest := False;
    btnClearPicture.HitTest := False;    
  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
  • btnUploadOnClick:btnUpload的OnClick事件,執行相簿選擇。
//執行相簿選擇
Procedure btnUploadOnClick(Sender: TObject);
Begin
  TakePhotoFromLibraryAction1.ExecuteTarget(nil);
End;
1
2
3
4
5
  • btnClearPictureOnClick:btnClearPicture的OnClick事件,清空圖片顯示,恢復成空白狀態。
//清空圖片顯示,恢復成空白狀態
Procedure btnClearPictureOnClick(Sender: TObject);
Begin
  imFCompanyLogo.Bitmap.Assign(nil);
End;
1
2
3
4
5
  • btnEditOnClick:btnEdit的OnClick事件,點選編輯按鈕,以啟用界面的編輯狀態。
//編輯按鈕,點選以啟用界面的編輯狀態
Procedure btnEditOnClick(Sender: TObject);
Begin
  RefState(True);
End;
1
2
3
4
5
  • btnSaveOnClick:btnSave的OnClick事件,將界面中收集的控制元件傳遞的資訊賦值給數據集,並儲存。
//儲存按鈕點選,將界面中收集的控制元件傳遞的資訊賦值給數據集,並儲存。
Procedure btnSaveOnClick(Sender: TObject);
Begin
  ControlToDB;
  dts0.ApplyUpdates(-1);
  ToastMessage.ShowToastMessage(self.GetMsgLang('SaveSuccess'),2.0,100);
  RefState(False);
End;
1
2
3
4
5
6
7
8
  • TakePhotoFromLibraryAction1OnDidFinishTaking:TakePhotoFromLibraryAction1的OnDidFinishTaking事件,點選從相簿中獲取圖片。
//打開相簿界面,從相簿中獲取圖片
Procedure TakePhotoFromLibraryAction1OnDidFinishTaking(Image: TBitmap);
Begin
  imFCompanyLogo.Bitmap.Assign(Image);
End;
1
2
3
4
5

# 3.5. 多語言設定

  在程式設計界面,點選界面右下側的按鈕展開界面,點選左側與右側按鈕切換至窗體語言設定界面,在此界面中設定多語言的相關資訊。對於絕大部分顯示的字幕型別,都可以點選對應的控制元件項,然後點選上側的修改按鈕修改顯示的字幕型別。

  對於在程式中填寫的多語言專案,請使用Self.GetMsgLang()來設定。比如上面程式中設定的幾項多語言專案:

  ToastMessage.ShowToastMessage(self.GetMsgLang('SaveSuccess'),2.0,100);
1

  填寫完成後,在窗體語言界面,點選下側的MsgLang,在此頁面中新增標題資訊。

# 3.6. 運行結果

# 4. 客戶資料查詢-多筆數據表單

  點選PinToo設計器左上角的按鈕打開選項欄,選擇左側的界面設定。

  在打開的界面中點選新增,在彈出的視窗中輸入模組資訊,如下圖所示,點選儲存。

  儲存完成後,選擇剛才建立的模組,點選上方的設計按鈕進入至設計頁面。

# 4.1. 功能簡述

  客戶資料的頁面按照客戶分類進行客戶資訊的分類展示,此頁面包含分組顯示錶單的模式設計,表格查詢等相關的模組設計內容。

# 4.2. 窗體設定

屬性 取值 說明
Height 800 設定視窗控制元件的高度
Width 400 設定視窗控制元件的寬度

# 4.3. 控制元件設定

  各結構控制元件說明如下。

控制元件名稱 控制元件型別 說明
fxLayout1 TfxLayout 佈局控制元件,用於對整個佈局進行居中控制
Align:Center
Height:800
Width:400
fxRectangle2 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Client
fxRectangle1 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Top
Height:60
fxLabel5 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:客戶程式碼或名稱
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
edQuery TfxEdit 編輯框,需清空原先的Text屬性中的內容
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
btnQuery TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:查詢
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
btnNew TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:新建
ButtonType.TextSettings.FontColor:#FF006633
Height:35
Width:75
fxShadowEffect1 TfxShadowEffect 陰影佈局控制元件,為fxRectangle1提供陰影效果控制
Opactiy:0.6
CustList TfxSuperListBox 客戶資料列表展示頁面
ItemStyle:CustListLayout
CustListLayout TfxLayout 模組佈局控制元件
Align:Top
Height:75
fxLayout2 TfxLayout 左側佈局
Align:Left
Width:335
fxLayout4 TfxLayout 頂部佈局,放置客戶代號資訊
Align:Top
FCustCode TfxLabel 位於fxLayout4中,文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:FCustCode
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
fxLine2 TfxLine 位於fxLayout4中,
LineLocation:Boundary
LineType:Bottom
fxLayout6 TfxLayout 頂部佈局,放置業務員資訊
Align:Top
fxLabel3 TfxLabel 位於fxLayout6中,文字標題控制元件
Align:Left
StyledSettings:所有屬性要全部清空設定為False
Text:業務員
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
Width:85
FEmpName TfxLabel 文字標題控制元件
Align:Client
StyledSettings:所有屬性要全部清空設定為False
Text:FEmpName
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
fxLayout7 TfxLayout 頂部佈局,放置業務員資訊
Align:Top
fxLabel3 TfxLabel 位於fxLayout7中,文字標題控制元件
Align:Left
StyledSettings:所有屬性要全部清空設定為False
Text:業務員
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
Width:85
FEmpName TfxLabel 位於fxLayout7中,文字標題控制元件
Align:Client
StyledSettings:所有屬性要全部清空設定為False
Text:FEmpName
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:16
TextSettings.Font.Style.fsBold:True
fxLine1 TfxLine 位於fxLayout2中,
LineLocation:Boundary
LineType:Bottom
fxLayout3 TfxLayout 位於fxLayout2中,右側按鈕佈局
Align:Client
btnEdit TfxSuperButton 按鈕佈局控制元件
Align:Center
ButtonType:TfxSvgButton
ButtonType.SvgData:查詢相關SVG圖形
Height:35
Width:75

# 4.4. 程式設計

  此功能程式需要引用公共單元ufxSuperListBox。在程式設計頁面點選右下角的按鈕展開,點選左側或者右側按鈕切換至Uses Unit,在其中查詢ufxSuperListBox並勾選引用。

  • fxRunFrameAfterScriptRun:fxRunFrame的AfterScriptRun事件,啟動頁面時進行查詢。
Procedure fxRunFrameAfterScriptRun(Sender: TObject);
//啟動頁面時執行查詢
Begin
  CustListLayOut.Visible := False;
  CustList.Initial;
  btnQueryOnClick(sender);
End;
1
2
3
4
5
6
7
  • OpenCustList:打開列表作為查詢內容呈現,從數據集中依次獲取數據,並動態建立于列表中。
procedure OpenCustList(ASQL:String);
//打開列表作為查詢內容呈現,從數據集中依次獲取數據,並動態建立于列表中
Var 
  iCds:TRFDataSet; 
  iLbi:TfxSuperListBoxItem;
  iStream:TMemoryStream;
  SqlText:String;
  i:integer;
begin
  CustList.Clear;
  iCds := TRFDataSet.Create(nil);
  CustList.BeginUpdate;
  try
    //打開數據集
    SqlText := ASQL;
    fxdm.DataExecSql(SqlText,iCds);
    iCds.First;
    //將獲取到的資訊動態建立于列表中
    While Not iCds.Eof Do
    Begin
        iLbi:=CustList.AddItem;
        iLbi.TagString := iCds.FieldByName('FInterID').AsString;       
        TfxLabel(iLbi.GetStyleFmxObject(FCustCode.StyleName)).Text:= 
        '    (' + iCds.FieldByName('FCustCode').AsString + ')' + iCds.FieldByName('FCustName').AsString;
        //TfxLabel(iLbi.GetStyleFmxObject(FCustName.StyleName)).Text:=iCds.FieldByName('FCustName').AsString;
        TfxLabel(iLbi.GetStyleFmxObject(FEmpName.StyleName)).Text:=iCds.FieldByName('FEmpName').AsString;  
        TfxLabel(iLbi.GetStyleFmxObject(FSaleType.StyleName)).Text:=iCds.FieldByName('FSaleType').AsString;
        //TfxSuperButton(iLbi.GetStyleFmxObject(btnEdit.StyleName)).TagSting:= iCds.FieldByName('FInterID').AsString;  
        //TfxLabel(iLbi.GetStyleFmxObject(ProcessText.StyleName)).Text:=IntToStr(i);  
      iCds.Next;
    End;    
  Finally
  //Except {ErrorMsg / RaiseMsg(Const Error:String)}
  iCds.Free;
  CustList.EndUpdate;
  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
37
  • btnEditOnClick:btnEdit的OnClick事件,點選以打開編輯頁面。
Procedure btnEditOnClick(Sender: TObject);
//點選打開編輯頁面
var
  Page:  TfxRunFrame;
  iLib: TfxSuperListBoxItem;
  vInterID: String;
Begin
  //編輯界面顯示,將數據集的參數進行傳遞,打開對應的數據
  iLib:= TfxSuperListBoxItem(TfmxObject(sender).TagObject);
  vInterID := StrToInt(iLib.TagString);
  Page := fxOpenFrameToPage('CustEdit');
  TRFDataSet(Page.FindComponent('dts0')).AddWhere('FInterID = ' + IntToStr(vInterID));
  TRFDataSet(Page.FindComponent('dts0')).OpenData;
  TfxTimer(Page.FindComponent('fxTimer')).Enabled := True;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  • btnNewOnClick:btnNew的OnClick事件,點選新建界面,打開編輯窗體並新增行記錄。
Procedure btnNewOnClick(Sender: TObject);
//新建界面,打開編輯窗體並新增行記錄。
var
  Page:  TfxRunFrame;
  iLib: TfxSuperListBoxItem;
  vInterID: String;
Begin
  //實體化,獲取詳細資訊
  iLib:= TfxSuperListBoxItem(TfmxObject(sender).TagObject);
  //vInterID := iLib.TagString;
  Page := fxOpenFrameToPage('CustEdit');
  vInterID := fxdm.GetNodeID;
  Page.TagValue := IntToStr(vInterID);
  TRFDataSet(Page.FindComponent('dts0')).AddWhere('FInterID = ' + IntToStr(vInterID));
  TRFDataSet(Page.FindComponent('dts0')).OpenData;
  //TfxTimer(Page.FindComponent('fxTimer')).Enabled := True;
  TRFDataSet(Page.FindComponent('dts0')).Append;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • btnQueryOnClick:btnQuery的OnClick事件,點選查詢,根據界面進行分析。
Procedure btnQueryOnClick(Sender: TObject);
//查詢,根據界面進行分析查詢
var
  vSQL: String;
Begin
  if edQuery.Text = ''  Then
    vSQL := 'SELECT * FROM Basic_Cust'
  else
    vSQL := 'SELECT * FROM Basic_Cust WHERE FCustCode LIKE ''%' + edQuery.Text +
     '%'' or FCustName LIKE ''%' + edQuery.Text + '%''';
  OpenCustList(vSQL);
End;
1
2
3
4
5
6
7
8
9
10
11
12

# 4.5. 多語言設定

  在程式設計界面,點選界面右下側的按鈕展開界面,點選左側與右側按鈕切換至窗體語言設定界面,在此界面中設定多語言的相關資訊。對於絕大部分顯示的字幕型別,都可以點選對應的控制元件項,然後點選上側的修改按鈕修改顯示的字幕型別。

# 4.6. 運行結果

# 5. 銷售訂單編輯-多筆數據主從表單

  點選PinToo設計器左上角的按鈕打開選項欄,選擇左側的界面設定。

  在打開的界面中點選新增,在彈出的視窗中輸入模組資訊,如下圖所示,點選儲存。

  儲存完成後,選擇剛才建立的模組,點選上方的設計按鈕進入至設計頁面。

# 5.1. 功能簡述

  此頁面用於編輯銷售訂單的資訊,執行審覈、列印等操作,功能涉及到視窗數據集的數據匯入、查詢表數據的引入、審覈、消審功能的預存程序的引入、視窗列印與Flying列印的引入。

# 5.2. 窗體設定

屬性 取值 說明
Height 800 設定視窗控制元件的高度
Width 400 設定視窗控制元件的寬度

# 5.3. 控制元件設定

  各結構控制元件說明如下。

控制元件名稱 控制元件型別 說明
fxRectangle2 TfxRectangle 方框控制元件,將所展示的控制元件包含于控制元件中
Align:Center
fxListBox1 TfxListBox 列表佈局控制元件,雙擊新增7個ListBoxItem以及2個ListBoxGroupHeader
ListBoxGroupHeader1 TListBoxGroupHeader 組頭
StyledSettings:清除所有的屬性,均設定為False
Text:基本資訊
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:14
TextSettings.Font.Style.fsBold:True
ListBoxItem5 TListBoxItem 列表項,放置單據編號資訊
Height:40
fxLabel4 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:單據編號
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
lbFBillNo TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
TextSettings.HorzAlign:Trailing
Width:295
fxLine3 TfxLine 位於ListBoxItem5中,
LineLocation:Boundary
LineType:Bottom
ListBoxItem6 TListBoxItem 列表項,放置狀態資訊
Height:40
fxLabel5 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:狀態
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
lbFBillNo TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:40
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:18
TextSettings.Font.Style.fsBold:True
TextSettings.HorzAlign:Trailing
Width:295
fxLine4 TfxLine 位於ListBoxItem6中,
LineLocation:Boundary
LineType:Bottom
ListBoxItem1 TListBoxItem 列表項,放置客戶名稱資訊
Height:40
fxLabel1 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:客戶名稱
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
lbFCustName TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:40
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:18
TextSettings.Font.Style.fsBold:True
TextSettings.HorzAlign:Trailing
Width:295
fxLine5 TfxLine 位於ListBoxItem1中,
LineLocation:Boundary
LineType:Bottom
ListBoxItem3 TListBoxItem 列表項,放置單據日期資訊
Height:40
fxLabel3 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:單據日期
Height:40
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
dtpDate TfxDateEdit 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:40
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:18
TextSettings.Font.Style.fsBold:True
TextSettings.HorzAlign:Trailing
Width:295
fxLine6 TfxLine 位於ListBoxItem3中,
LineLocation:Boundary
LineType:Bottom
ListBoxGroupHeader2 TListBoxGroupHeader 組頭
StyledSettings:清除所有的屬性,均設定為False
Text:訂單明細
TextSettings.FontColor:#FFCC9933
TextSettings.Font.Size:14
TextSettings.Font.Style.fsBold:True
ListBoxItem4 TListBoxItem 列表項,放置按鈕匯入布種
Height:40
btnImport TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:匯入布種
ButtonType.TextSettings.FontColor:#FF006633
Height:40
Width:80
fxLine2 TfxLine 位於ListBoxItem4中,
LineLocation:Boundary
LineType:Bottom
ListBoxItem7 TListBoxItem 列表項,放置按鈕匯入布種
Height:495
ItemList TfxSuperListBox
ItemStyle:ItemListLayout
ItemListLayout TfxLayout 模組佈局控制元件
Align:Top
Height:75
fxLayout5 TfxLayout 位於ItemListLayout中,模組佈局控制元件
Height:75
Width:305
fxLayout1 TfxLayout 位於fxLayout5中,模組佈局控制元件
Align:Top
Height:25
fxLabel7 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:布種名稱
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
FItemName TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:226
FAuxQty TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:71
fxLayout7 TfxLayout 位於fxLayout5中,模組佈局控制元件
Align:Top
Height:25
fxLabel7 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:布種資訊
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
FWidth TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:226
FAmount TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:71
fxLayout8 TfxLayout 位於fxLayout5中,模組佈局控制元件
Align:Top
Height:25
fxLabel9 TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Text:顏色名稱
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:65
FColorName TfxLabel 文字標題控制元件
StyledSettings:所有屬性要全部清空設定為False
Height:25
TextSettings.FontColor:#FF666666
TextSettings.Font.Size:14
Width:226
btnDelete TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:刪除
ButtonType.TextSettings.FontColor:#FF006633
Height:25
Width:71
ListBoxItem2 TListBoxItem 列表項,放置按鈕功能
Height:495
btnPrint TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:移動列印
ButtonType.TextSettings.FontColor:#FF006633
Height:40
Width:80
btnMore TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:更多功能
ButtonType.TextSettings.FontColor:#FF006633
Height:40
Width:80
btnSave TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:儲存草稿
ButtonType.TextSettings.FontColor:#FF006633
Height:40
Width:80
btnSaveCheck TfxSuperButton 按鈕佈局控制元件
ButtonType:TfxSvgButton
ButtonType.Text:儲存審覈
ButtonType.TextSettings.FontColor:#FF006633
Height:40
Width:80
cbMore TfxComboBox 功能覈取方塊
Visible:False
cbPrinter TfxComboBox 列印列表覈取方塊
Visible:False
dts0 TfxRFDataSet 主數據集
dts1 TfxRFDataSet 明細數據集
dtsCompany TfxRFDataSet 公司資料
fxFlying1 TfxFlying Flying列印設定
HttpHost:nas.isoface.cn
HttpPort:8808
ReportName:Sal_Order.fr3

# 5.4. 程式設計

  此功能程式需要引用公共單元Flying、ufxSuperListBox。在程式設計頁面點選右下角的按鈕展開,點選左側或者右側按鈕切換至Uses Unit,在其中查詢Flying、ufxSuperListBox並勾選引用。

  • 初始設定:設定顯示初始化內容。
Begin
  //初始化設定
  cbMore.Items.CommaText := Self.GetMsgLang('審覈,消審,作廢,還原,刪除');
End.
1
2
3
4
  • RefState:重新整理顯示狀態,根據單據狀態確定按鈕的顯示狀態。
procedure RefState(AStatus:Integer);
//重新整理顯示狀態,根據單據狀態確定
begin
  //已作廢
  if AStatus = 0 Then
  begin
    lbFCustName.HitTest := False;
    dtpDate.HitTest := False;
    btnImport.HitTest := False;
    btnPrint.HitTest := False;
    btnDelete.HitTest := False;
    btnSave.HitTest := False;
    btnSaveCheck.HitTest := False;    
  End;
  //草稿
  if AStatus = 1 Then
  begin
    lbFCustName.HitTest := True;
    dtpDate.HitTest := True;
    btnImport.HitTest := True;
    btnPrint.HitTest := False;
    btnDelete.HitTest := True;
    btnSave.HitTest := True;
    btnSaveCheck.HitTest := True;     
  End;
  //已審覈
  if AStatus = 2 Then
  begin
    lbFCustName.HitTest := False;
    dtpDate.HitTest := False;
    btnImport.HitTest := False;
    btnPrint.HitTest := True;
    btnDelete.HitTest := False;
    btnSave.HitTest := False;
    btnSaveCheck.HitTest := False;     
  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
37
  • OpenSalOrder:打開銷售訂單主表,顯示對應的數據。
procedure OpenSalOrder;
//打開銷售訂單主表,顯示對應的數據
begin
  //主表
  lbFBillNo.Text := dts0.FieldByName('FBillNo').AsString;
  if dts0.FieldByName('FStatus').AsInteger = 0 Then
    lbStatus.Text := Self.GetMsgLang('已作廢');
  if dts0.FieldByName('FStatus').AsInteger = 1 Then 
    lbStatus.Text := Self.GetMsgLang('草 稿');
  if dts0.FieldByName('FStatus').AsInteger = 2 Then 
    lbStatus.Text := Self.GetMsgLang('已審覈');
  lbFCustName.Text := dts0.FieldByName('FCustName').AsString;
  dtpDate.DateTime := dts0.FieldByName('FDate').AsDateTime;
  RefState(dts0.FieldByName('FStatus').AsInteger);
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  • OpenSalOrderEntry:打開銷售訂單明細,顯示對應的數據。
procedure OpenSalOrderEntry;
//打開銷售訂單明細,顯示對應的數據
var
  iLbi: TfxSuperListBoxItem;
begin
  ItemList.Clear;
  dts1.First;
  ItemList.BeginUpdate;
  //依次更新各行的明細數據資訊
  while not dts1.Eof Do
  begin
    iLbi := ItemList.AddItem;
    iLbi.TagString := dts1.FieldByName('FID').AsString;
    TfxLabel(iLbi.GetStyleFmxObject('FItemName')).Text := 
    dts1.FieldByName('FItemSpec').AsString + dts1.FieldByName('FItemName').AsString;
    TfxLabel(iLbi.GetStyleFmxObject('FWidth')).Text := 
    Self.GetMsgLang('門幅 ') + dts1.FieldByName('FWidth').AsString + Self.GetMsgLang('克重 ') + 
    dts1.FieldByName('FWeightOfLength').AsString;
    TfxLabel(iLbi.GetStyleFmxObject('FColorName')).Text := 
    dts1.FieldByName('FColorNo').AsString + dts1.FieldByName('FColorName').AsString;
    TfxLabel(iLbi.GetStyleFmxObject('FAuxQty')).Text := 
    dts1.FieldByName('FQtyPiece').AsString + dts1.FieldByName('FUnitPiece').AsString +  
    dts1.FieldByName('FAuxQty').AsString + dts1.FieldByName('FUnitName').AsString;
    TfxLabel(iLbi.GetStyleFmxObject('FAmount')).Text := 
    dts1.FieldByName('FAmount').AsString;
    dts1.Next;
  End;
  ItemList.EndUpdate; 
  //重新整理顯示狀態
  RefState(dts0.FieldByName('FStatus').AsInteger); 
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
  • fxRunFrameAfterScriptRun:初始化,設定初始查詢程式資訊。
Procedure fxRunFrameAfterScriptRun(Sender: TObject);
//初始化,設定初始查詢程式資訊
Begin
  ItemListLayOut.Visible := False;
  dts0.SQL.Text := 'select a.*,b.FCustName as FCustFullName,b.FAddress,b.FPhone1,b.FHousebank,' + 
  'b.FHouseBnkAct from Sal_Order a(NOLOCK) LEFT JOIN Basic_Cust B ON A.FCustID = B.FInterID  ' + 
  ' where A.FInterID = :FInterID';
  dts1.SQL.Text := 'SELECT * FROM Sal_OrderEntry WHERE FInterID = :FInterID';
  dtsCompany.SQL.Text := 'SELECT TOP 1 * FROM Basic_Company';
  dtsCompany.OpenData;
End;
1
2
3
4
5
6
7
8
9
10
11
  • fxTimer1OnTimer:fxTimer1的OnTimer事件,重新整理顯示的主數據集與明細數據集。
Procedure fxTimer1OnTimer(Sender: TObject);
//重新整理顯示主數據集與明細數據集
Begin
  fxTimer1.Enabled := False;
  OpenSalOrder;
  OpenSalOrderEntry;
End;
1
2
3
4
5
6
7
  • cbMoreOnChange:cbMore的OnChange事件,功能按鈕的選擇選擇對應的專案時更新執行預存程序。
Procedure cbMoreOnChange(Sender: TObject);
//功能按鈕的選擇選擇對應的專案時更新執行預存程序
var
  vOption: String;
  AStoredProc: TRFStoredProc;
  vRAISEMSG,vMSG: String;
  i, j: Integer;  
Begin 
  //選擇預存程序的功能型別
  if cbMore.ItemIndex = -1 Then
    exit;
  if cbMore.ItemIndex = 0 Then
    vOption := 'Check';
  if cbMore.ItemIndex = 1 Then
    vOption := 'UnCheck';
  if cbMore.ItemIndex = 2 Then
    vOption := 'Revoke';
  if cbMore.ItemIndex = 3 Then
    vOption := 'Recover';
  if cbMore.ItemIndex = 4 Then
    vOption := 'Delete';
  //設定預存程序,獲取參數
  AStoredProc := TRFStoredProc.Create(nil);
  AStoredProc.Connection := fxdm.DBConnection;
  try
    AStoredProc.StoredProcName := 'sp_Sal_Order';
    AStoredProc.Prepare;
    if AStoredProc.Prepared then
    begin
      //參數賦值
      //AStoredProc.ParamByName('FDataID').AsString := dts0.FieldByName('FInterID').AsString;
      //AStoredProc.ParamByName('Flag').AsString := 'Delete';
      //AStoredProc.ParamByName('FUserCode').AsString := self.GetMsgLang('admin');
      fxdm.SetStoredProcParam(AStoredProc,0,vOption); 
      fxdm.SetStoredProcParam(AStoredProc,1,dts0.FieldByName('FInterID').AsString);
      fxdm.SetStoredProcParam(AStoredProc,2,self.GetMsgLang('admin'));
      try
        //執行預存程序
        AStoredProc.ExecProc;
       Except
          vRAISEMSG:= ErrorMsg;
          //格式化錯誤資訊提示
          i := Pos('SQMESSAGE', vRAISEMSG);
          j := Pos('[SQL Server]', vRAISEMSG);
          vMSG := Copy(vRAISEMSG, i, Length(vRAISEMSG) - i + 1);
    

          // 非格式化訊息提示
          if i = 0 then
          begin
            ShowMessage(Copy(vRAISEMSG, j + 12, Length(vRAISEMSG) - j + 1));
            Exit;
          end;
        end;
        //btnQueryClick(sender);
    end;
  finally
    //重新整理狀態顯示與數據集顯示
    AStoredProc.Free;
    dts0.OpenData;
    dts1.OpenData;
    OpenSalOrder;
    OpenSalOrderEntry;
    cbMore.ItemIndex := -1;
  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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  • lbFCustNameOnClick:lbFCustName的OnClick事件,匯入選擇客戶資訊。
Procedure lbFCustNameOnClick(Sender: TObject);
//匯入選擇客戶資訊
var
  Form: TfxRunFrame;
Begin
  //打開選擇客戶資訊視窗
  Form := fxOpenFrameToForm('ImportCustName',[syFree],'');
  Form.TagObject := Self;
  //if GetVirtualForm(Form).ModalResult = mrYes Then
  //  lbFCustName.Text := dts0.FieldByName('FCustName').AsString;  
End;
1
2
3
4
5
6
7
8
9
10
11
  • btnImportOnClick:btnImport的OnClick事件,匯入布種資訊
Procedure btnImportOnClick(Sender: TObject);
//匯入布種
var
  Form: TfxRunFrame;
Begin
  Form := fxOpenFrameToForm('ImportItem',[syFree],'');
  Form.TagObject := Self;
  //if GetVirtualForm(Form).ModalResult = mrYes Then
  //  OpenSalOrderEntry;   
End;
1
2
3
4
5
6
7
8
9
10
  • dts1OnNewRecord:dts1的OnNewRecord事件,新增時新增初始化資訊。
Procedure dts1OnNewRecord(DataSet: TDataSet);
//新增時新增初始化資訊
Begin
  dts1.FieldByName('FID').AsInteger := FXDM.GetNodeID;
  dts1.FieldByName('FInterID').AsString := dts0.FieldByName('FInterID').AsString;
  dts1.FieldByName('FEntryID').AsString := dts1.RecordCount + 1;
End;
1
2
3
4
5
6
7
  • fxTimer2OnTimer:fxTimer2的OnTimer事件,重新整理顯示明細。
Procedure fxTimer2OnTimer(Sender: TObject);
//重新整理顯示明細
Begin
  fxTimer2.Enabled := False;
  OpenSalOrderEntry;
End;
1
2
3
4
5
6
  • btnDeleteOnClick:btnDelete的OnClick事件,刪除后重新整理明細資訊。
Procedure btnDeleteOnClick(Sender: TObject);
//刪除行,刪除后重新整理明細
var
  iLbi: TfxSuperListBoxItem;
Begin
  iLbi:= TfxSuperListBoxItem(TfmxObject(sender).TagObject);
  dts1.First;
  while not dts1.FieldByName('FInterID').AsString = iLbi.TagString Do
  begin
    dts1.Next;
  End;
  dts1.Delete;
  fxTimer2.Enabled := True;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • btnSaveOnClick:btnSave的OnClick事件,點選儲存數據。
Procedure btnSaveOnClick(Sender: TObject);
//儲存
var
  vdts: TRFDataSet;
Begin
  //檢查客戶明細是否為空
  vdts := TRFDataSet.Create(nil);
  try
    if dts0.FieldByName('FCustName').AsString = '' Then
    begin
      ShowMessage(Self.GetMsgLang('客戶名稱不能為空!'));
      exit;
    End;
    //檢查明細數據集是否為空
    if dts1.RecordCount = 0 Then
    begin
      ShowMessage(Self.GetMsgLang('訂單明細不能為空!'));
      exit;    
    End;
  //更新
    dts0.Edit;
    fxdm.OpenSQL(vdts,'SELECT FInterID FROM Sal_Order WHERE FInterID = ''' + dts0.FieldByName('FInterID').AsString + '''','demo');
    if vdts.RecordCount = 0 Then
      dts0.FieldByName('FBillNo').AsString := fxdm.GetBillNo('12020002',now,False);
    dts0.Post;
    dts0.ApplyUpdates(-1);
    dts1.Edit;
    dts1.Post;
    dts1.ApplyUpdates(-1);  
   
    Finally
    //Except {ErrorMsg / RaiseMsg(Const Error:String)}
      vdts.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
25
26
27
28
29
30
31
32
33
34
35
  • dtpDateOnChange:dtpDate的OnChange事件,修改單據日期。
Procedure dtpDateOnChange(Sender: TObject);
//修改時間
Begin
  dts0.Edit;
  dts0.FieldByName('FDate').AsDateTime := dtpDate.DateTime;
  dts0.Post;
End;
1
2
3
4
5
6
7
  • btnSaveCheckOnClick:btnSaveCheck的OnClick事件,儲存審覈單據。
Procedure btnSaveCheckOnClick(Sender: TObject);
//儲存審覈
Begin
  //儲存
  btnSaveOnClick(Sender);
  //審覈
  cbMore.ItemIndex := 0;
  cbMoreOnChange(Sender);
End;
1
2
3
4
5
6
7
8
9
  • btnMoreOnClick:btnMore的OnClick事件,點選引出功能下拉功能表。
Procedure btnMoreOnClick(Sender: TObject);
//引出下拉功能表
Begin
  cbMore.DropDown;
End;
1
2
3
4
5
  • fxFlying1OnReceived:fxFlying1的OnReceived事件,接收穫取列印數據資訊。
Procedure fxFlying1OnReceived(ASender: TObject; AType: string; AContent: string);
//接收列印數據資訊
var
  Form: TfxRunFrame;
begin
  if AType='GetPrintList' then
  begin
    cbPrinter.Items.CommaText := AContent;
    if cbPrinter.Items.Count <> 0  Then
    cbPrinter.ItemIndex := 0;
    fxTimer3.Enabled := True;
  end
  else if AType='GetFileUrl' then
  begin
    //fxShowFileView('PDF',AContent,'','','');
    Form := fxOpenFrameToForm('HTMLView',[syFree],'');
    Form.TagObject := Self;
    Form.TagValue := AContent;
  end
  else if AType='Error' then
    Showmessage(AContent);
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • btnPrintOnClick:btnPrint的OnClick事件,點選引入列印數據資訊。
Procedure btnPrintOnClick(Sender: TObject);
//移動列印
Begin
  fxFlying1.GetPrintList;
End;
1
2
3
4
5
  • fxTimer3OnTimer:fxTimer3的OnTimer事件,引入列印數據資訊。
Procedure fxTimer3OnTimer(Sender: TObject);
//引入列印數據集資訊
Begin
  fxTimer3.Enabled := False;
  fxFlying1.PrinterName := cbPrinter.Items.Strings[cbPrinter.ItemIndex];
  fxFlying1.AddPrintData(dts0,'A');
  fxFlying1.AddPrintData(dts1,'B');
  fxFlying1.AddPrintData(dtsCompany,'C');
  fxFlying1.ReportPreview;
End;
1
2
3
4
5
6
7
8
9
10
  • dts0OnNewRecord:dts0的OnNewRecord事件,主數據集更新時初始化部分內容資訊。
Procedure dts0OnNewRecord(DataSet: TDataSet);
//主數據集更新時初始化部分內容資訊
Begin
  dts0.FieldByName('FInterID').AsString := self.TagValue;
  dts0.FieldByName('FBillID').AsString := '12020002';
  dts0.FieldByName('FBillNo').AsString := fxdm.GetBillNo('12020002',now,True);
  dts0.FieldByName('FDate').AsDateTime := Date;
  dts0.FieldByName('FSignDate').AsDateTime := Date;
  dts0.FieldByName('FContractNo').AsString := dts0.FieldByName('FBillNo').AsString;
  dts0.FieldByName('FExchangeRate').AsInteger := 1;
  dts0.FieldByName('FStatus').AsInteger := 1;
  dts0.FieldByName('FClosed').AsInteger := 0;
  dts0.FieldByName('FBiller').AsString := Self.GetMsgLang('admin');
  dts0.FieldByName('FCreateDate').AsDateTime := now; 
  dts0.Post;
  OpenSalOrder;
  OpenSalOrderEntry;
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 5.5. 多語言設定

  在程式設計界面,點選界面右下側的按鈕展開界面,點選左側與右側按鈕切換至窗體語言設定界面,在此界面中設定多語言的相關資訊。對於絕大部分顯示的字幕型別,都可以點選對應的控制元件項,然後點選上側的修改按鈕修改顯示的字幕型別。

  對於在程式中填寫的多語言專案,請使用Self.GetMsgLang()來設定。比如上面程式中設定的幾項多語言專案:

  ShowMessage(Self.GetMsgLang('客戶名稱不能為空!'));
1

  填寫完成後,在窗體語言界面,點選下側的MsgLang,在此頁面中新增標題資訊。

# 5.6. 報表設定

  • Flying引入

  單據支援Flying引入,實體中已經介紹過程式中的使用方式,在Flying服務端需要引入列印格式進行設計。

  打開Flying服務端,點選列印設定-HTTP列印,檢查設定是否與客戶端的保持一致,點選應用儲存設定。

  點選列印設定-報表設計按鈕,在右側的報表列表中右鍵單擊,選擇新建報表。

  在對話方塊中輸入報表的名稱,此處輸入Sal_Order,然後點選OK按鈕。

  在列表中選擇剛才建立的報表項,右鍵點選,在選項中選擇數據構造,打開數據構造界面。首先設定好連線設定,點選連線按鈕。

  待連線按鈕變成灰色后,在SQL中輸入使用的數據集的SQL指令碼。

--dts0
select TOP 1 a.*,b.FCustName as FCustFullName,
b.FAddress,b.FPhone1,
b.FHousebank,b.FHouseBnkAct 
from Sal_Order a(NOLOCK) 
LEFT JOIN Basic_Cust B ON 
A.FCustID = B.FInterID   


--dts1
SELECT TOP 1 * FROM Sal_OrderEntry

--dtsCompany
SELECT TOP 1 * FROM Basic_Company
1
2
3
4
5
6
7
8
9
10
11
12
13
14

  輸入完成後,點選執行SQL,等待下方的編輯框中出現欄位資訊后,點選應用返回至上一界面,在界面中點選儲存數據。

  在報表設計界面中雙擊Sal_Order,打開報表設計界面進行設計。

  設計完成後,PinToo端可直接使用指定的設定執行列印設定操作。

# 5.7. 運行結果

RestAPI
系統函式

← RestAPI 系統函式→

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