1. 程式人生 > >Oracle Form開發之folder(資料夾)功能開發(一)

Oracle Form開發之folder(資料夾)功能開發(一)

一、模板製作:YSFOLDER.FMB

開啟TEMPLATE.FMB,如果開啟的是APPSTAND.FMB,以下步驟省略

1FORM級觸發器:

1、 WHEN-NEW-FORM-INSTANCE後面新增以下程式碼:

--定義資料夾資料塊

app_folder.define_folder_block(

object_name => ' DETAILBLOCK _FOLDER' ,

folder_block_name => 'DETAILBLOCK',

prompt_block_name => 'DETAILBLOCK_PROMPT',

folder_canvas_name => 'DETAILBLOCK_STACKED',

folder_window_name => 'BLOCKNAME',

disabled_functions => '');

--以上引數均為VARCHAR2,長度不得超過20個字元

2、 增加FORM級觸發器:FOLDER_ACTIONPL/SQL程式碼如下:

app_folder.event(:global.folder_action);

3、 增加FORM級觸發器:FOLDER_RETURN_ACTIONPL/SQL程式碼如下:

null;

--

-- action code is in :global.folder_action

-- affected field is in :global.folder_field

--

2Attached Libraries

新增檔案:APPFLDR.PLL

來源:ERP安裝目錄下,AU目錄下查詢該類檔案所在的目錄

3Object Groups

繼承一個物件組:STANDARD_FOLDER

做法:複製APPSTAND.FMB中的同名物件,貼上到模板物件組中,選擇“Refence”(繼承),路徑方式選擇“Remove path”(不要路經)。

結果:將會把物件組中的所有物件對映新增到相應的物件節點中。

二、模板例子的製作

1、 修改WHEN-NEW-FORM-INSTANCE中資料夾資料塊定義語句中的引數,確定物件名稱(一般為form物件名稱)、資料夾資料塊名稱、標題塊名稱、堆疊畫布名稱、視窗名稱。

2、 定義視窗(windows),win_main:繼承屬性WINDOW_NORMAL

3、 定義堆疊畫布(stacked canvas-views, cv_detail_stacked:繼承屬性類CANVAS_STACKED

4、 定義資料夾資料塊(folder block),blk_detail:繼承屬性類BLOCK

(1) 觸發器:

· KEY-EXEQRY

app_folder.event('KEY-EXEQRY');

· KEY-NEXT-ITEM

app_folder.event('KEY-NEXT-ITEM');

· KEY-PREV-ITEM

app_folder.event('KEY-PREV-ITEM');

· POST-BLOCK

app_folder.event('POST-BLOCK');

· PRE-BLOCK

app_folder.event('PRE-BLOCK');

· WHEN-NEW-BLOCK-INSTANCE

App_folder.event('WHEN-NEW-BLOCK-INSTANCE');

· KEY_CLRBLK

App_folder.event(' KEY_CLRBLK ');

· KEY_ENTQRY

App_folder.event(' KEY_ENTQRY ');

· KEY_NXTREC

App_folder.event(' KEY_NXTREC ');

· KEY_PRVREC

App_folder.event(' KEY_PRVREC ');

· PRE_QUERY

App_folder.event(' PRE_QUERY ');

· WHEN-NEW-RECORD-INSTANCE

App_folder.event('WHEN-NEW-RECORD-INSTANCE');

(2) 定義資料項,可以是表項,也可以是非基表項,確定哪些項需要放在堆疊畫布上,注意只有在堆疊畫布上的項才能使用資料夾功能

(3) 注意:資料項的型別不能是:Display ItemList Item等;

可以是:Text ItemCheck Box等;

如果開啟folder時出現錯誤:“Set_Item_Property沒有這樣的屬性”,說明erp標準程式中用到的屬性在個別項中不存在,出現幾次就有幾個缺乏這個屬性的Item;是否擁有這個屬性,是由Item的型別確定的,因此有些Item型別不能用於folder功能。

(4) 確定各個項在畫布中的位置

5、 定義標題資料塊(prompt block, blk_detail_prompt:繼承屬性類BLOCK_DIALOG

便捷的做法:先複製資料夾資料塊blk_detail,改名稱,再刪去新塊下的全部觸發器,然後除去不需要的項,修改剩下所有項的屬性繼承FOLDER_PROMPT_MULTRIROW,最後將各個項的default value屬性值寫入對應的中文或英文標題

(1) 觸發器:無

(2) 標題項,來自資料夾資料塊blk_detail,屬性繼承自FOLDER_PROMPT_MULTIROWdefault value屬性值寫入相應的中英文標題