標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (120) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (127) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (3) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

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 定義轉換為實際執行畫面非常有幫助。

沒有留言:

張貼留言