Oracle Form開發之folder(資料夾)功能開發(一)
一、模板製作:YSFOLDER.FMB
開啟TEMPLATE.FMB,如果開啟的是APPSTAND.FMB,以下步驟省略:
1、FORM級觸發器:
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_ACTION,PL/SQL程式碼如下:
app_folder.event(:global.folder_action);
3、 增加FORM級觸發器:FOLDER_RETURN_ACTION,PL/SQL程式碼如下:
null;
--
-- action code is in :global.folder_action
-- affected field is in :global.folder_field
--
2、Attached Libraries:
新增檔案:APPFLDR.PLL
來源:ERP安裝目錄下,AU目錄下查詢該類檔案所在的目錄
3、Object 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 Item、List Item等;
可以是:Text Item、Check 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_MULTIROW,default value屬性值寫入相應的中英文標題