2012年7月23日 星期一

列印時讓 user 可以選擇中/英文


User 有一個需求,為採購單列印時可以列印中文也可以印英文,本來要 user 去切換語系為英文就可以解了,但是他們不買單,於是就稍微自己客製一下。
這個問題因為不熟悉 4gl & 4fd (鼎新的 Tiptop 技轉原訂 2012.10 月上課,但是他們還沒有回覆確認的時間...),如果是以前寫程式的經驗應該很簡單,就是:
1. 在列印的功能新增一個"列印英文"的按鈕
2. 在該按鈕的  Event  修改語系為英文
看吧,就是那麼簡單。

但換到了Tiptop 上好像就沒有那麼容易了,Tiptop 的客製規範還滿嚴謹的,猜測應該是讓別人 (後人) 可以遵循這個規則來開發程式而不會發散掉而增加維護的難度。

在此寫下這些流程以增加印象...

因這支程式按 o 列印時,會在右邊的 menu上顯示列印的按鈕,我就以這個按鈕做為參考範例。

步驟 1.
    依照客製規則,menu 是不用做畫面檔的修改的,而 menu 是由設定及程式碼來控制:
    (1) 增加  Action :p_base_act
          在此新增一個 prt_po_80_eng 的action
          加入一筆資料,用來做為列印英文用的。

    (2) 在 p_zz 中賦予 action 執行權限
 
    (3) 在程式中新增列印時 menu 的項目


    (4) 此時應該就會在畫面上出現了

步驟 2. 列印程式的 4gl-- function xxx_out()
    (1)  該 function 最後面會將參數傳入  Crystal Report 中

        LET l_cmd = l_prog CLIPPED,
                  " '",g_today CLIPPED,"' ''",
                  " '",g_lang CLIPPED,"' '"

       把 g_lang 再另外定義一個 l_lang
       DEFINE l_lang        LIKE type_file.chr1     #可選擇列印(0.中文/1.英文/2.簡體)
       將上述 l_cmd 的 g_lang 改為 l_lang ,再到英文列印的 Button 中 l_lang Hard Code 為 '1' 就可以了。


        ON ACTION prt_po_80_eng
               LET l_prog='aicr040'
            LET l_lang = '1' 
            EXIT MENU