2014年9月8日 星期一

指定畫面單身資料匯出 Excel

http://4shiun.blogspot.tw/2013/01/excel.html

TIPTOP 提供一個的 Library 可以將畫面單身的資料匯出到 Excel ,
例如:CALL cl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(g_sfq),'','')

但是有程式在視窗上是有二個單身,像是工單發料、工單退料、付款沖帳、收款沖帳…等,
或是有程式會開啟另一個視窗的明細資料,像出貨單的單價,應付帳款的多發票…等。
同一支程式會呼叫多個畫面或是有多單身的情況時,
用 cl_export_to_excel 就會發現,怎麼匯出到 Excel 的資料是對的,但是欄位的名稱是錯的。
造成匯出來就會不整齊,不會依序排好。
因為 ui.Interface.getRootNode() 都是抓第一個顯示的單身來當作匯出的資料陣列。
所以我們就要把 ui.Interface.getRootNode() 改成正確的 node (節點)。
TIPTOP 並非 MDI 視窗架構,所以一個 Windows 只會有一個 Form。

畫面的架構:
UserInterface
 |--Windows
 |        |-- Form
 |        |        |--Table
 |        |--Dialog
 |--TopMenu
 |--ToolBar

如下圖所示:



參考 4js 網站說明,提供 ui.window 的函數說明:
CLASS Method:
forName( name STRING ):回傳目前是否有開啟 name 視窗,並傳回位置
getCurrent():回傳目前的視窗位置

OBJECT Method:
findNode( t STRING, n STRING ):找尋類型為 t,且名稱為 n 的節點
createForm( n STRING ):開啟一個新的畫面,且傳回新畫面的位置
getForm():回傳目前畫面的位置
getNode():回傳目前節點的位置
setText( t STRING ) :設定視窗的標題名稱
getText():回傳視窗的標題名稱
setImage( n STRING ):設定視窗的 icon 圖示
getImage():回傳視窗的 icon 圖示

首先要先宣告二個變數:
DEFINE w ui.Window
DEFINE n om.DomNode

再來就是要取得目前的視窗和要匯出 Excel 的 Node:
如果是新的視窗來顯示的話,只要用 getNode 即可,
LET w = ui.Window.getCurrent()
LET n = w.getNode()

如果是多單身的視窗,就要告訴系統是那一個單身 Node:
LET w = ui.Window.getCurrent()
LET n = w.findNode("Table","s_sfs")

然後再修改  cl_export_to_excel 把 ui.Interface.getRootNode() 改為 n 就可以了,
CALL cl_export_to_excel(n,base.TypeInfo.create(g_sfs),'','')

***********************************************************************************************
在 Genero 中,您可以透過兩種主要方式來查看或檢查應用程式畫面的樹狀結構:在
Genero Studio 的設計階段,以及在應用程式執行階段的除錯模式
1. 在 Genero Studio 中 (設計階段)
當您在 Genero Studio 中編輯表單設計檔案 (.4fd 或 .per) 時,您可以直接在介面中看到其結構。 
  • 表單結構 (Form Structure) 檢視:在 Genero Studio 的 Form Designer 介面中,通常右側或下方會有一個稱為「Form Structure」或「結構」的面板。此面板會以樹狀結構列出表單中的所有容器(如 WINDOW, GROUP, HBOX, VBOX, GRID, FOLDER)和各個元件(如 FIELD, BUTTON, TABLE, TREE 等),顯示它們的階層關係。 
2. 在應用程式執行階段 (除錯模式) (這樣做,就可以看到類似以上截圖的的debug畫面)
當程式實際執行時,特別是使用 Genero Desktop Client (GDC) 或 Genero Web Client (GWC-JS) 時,您可以啟用特殊的除錯模式來查看實際生成的使用者介面抽象樹 (Abstract User Interface, AUI Tree)。 
使用 Genero Desktop Client (GDC)
  • 啟用除錯模式:您需要在啟動 GDC 時加入 -D 選項,例如在執行應用程式的捷徑或命令列中加入此參數。
  • 檢視 AUI Tree:在應用程式執行時,按下 Ctrl 鍵並同時滑鼠右鍵點擊您想檢查的畫面元件。這將會彈出一個「AUI Debug Tree」視窗,顯示該元件及其父層、子層的詳細樹狀結構和屬性。 
使用 Genero Web Client (GWC-JS)
  • 啟用除錯模式:需要確保 Genero Application Server (GAS) 運行在開發者模式 (development mode)。
  • 檢視 AUI Tree:在瀏覽器中運行應用程式時,如果處於除錯模式,畫面右上角會出現一個「Debug Tools」圖示。點擊該圖示,會在新的瀏覽器分頁中開啟 GWC-JS 除錯工具頁面,您可以在其中看到 AUI Tree 的分頁。 

這些工具對於除錯表單佈局、確認元件的父子關係以及了解 Genero 如何將 4GL/4FD 定義轉換為實際執行畫面非常有幫助。

沒有留言:

張貼留言