EBS FORM进阶1. 文件夹(FOLDER)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EBS FORM进阶1. 文件夹(FOLDER)相关的知识,希望对你有一定的参考价值。

进阶1. 文件夹(FOLDER)

开发步骤
  1. 打开APPSTAND.fmb,把对象组“STANDARD_FOLDER”拖到我们自己的Form中,并选择子类
  2. 引用Folder的PLL库:APPFLDR.pll
  3. 按照普通步骤创建数据块:XXX_FOLDER
  4. 增加SWITCHER项,子类SWITCHER
  5. 编写触发器

    WHEN-NEW-BLOCK-INSTANCEapp_folder.event(‘WHEN-NEW-BLOCK-INSTANCE’);
    WHEN-NEW-RECORD-INSTANCEapp_folder.event(‘WHEN-NEW-RECORD-INSTANCE’);
    KEY-PREV-ITEMapp_folder.event(‘KEY-PREV-ITEM’);
    KEY-NEXT-ITEMapp_folder.event(‘KEY-NEXT-ITEM’);
    KEY-EXEQRYapp_folder.event(‘KEY-EXEQRY’);
    PRE-QUERYapp_folder.event(‘PRE-QUERY’);
    PRE-BLOCKapp_folder.event(‘PRE-BLOCK’);
    POST-BLOCKapp_folder.event(‘POST-BLOCK’);
    POST-QUERYapp_folder.event(‘OST-QUERY’);
    KEY-ENTQRYapp_folder.event(‘EY-ENTQRY’);
    KEY-PRVRECapp_folder.event(‘KEY-PRVREC’);
    KEY-NXTRECapp_folder.event(‘KEY-NXTREC’);
    KEY-CLRRECapp_folder.event(‘KEY-CLRREC’);
    KEY-CLRBLKapp_folder.event(‘KEY-CLRBLK’);
  6. 创建提示块:XXX_PROMPT

    NameSubclass
    FOLDER_TITLEDYNAMIC_TITLE
    FOLDER_OPENFOLDER_OPEN
    FOLDER_DUMMYFOLDER_DUMMY
    ORDER_BY1FOLDER_ORDERBY
    ORDER_BY2FOLDER_ORDERBY
    ORDER_BY3FOLDER_ORDERBY

    上面列出的是通用的,数据块有多少字段要显示,就要创建多少个同名的提示字段(带文件夹的表单,数据的头其实也是字段,只补过内容是固定的)。

  7. 设置布局(只有堆叠画布上的项才能使用文件夹)

  8. 设置FORM级触发器

    1. FOLDER_ACTION中追加:
    2. app_folder.event(:global.folder_action);
    3. KEY-CLRFRM中追加:
    4. app_folder.event(‘KEY-CLRFRM‘);
  9. 在WHEN-WINDOW-RESIZED中追加,注意BLOCKNAME,要改为你的Folder所在的Window名字:

    1. DECLARE
    2. l_x_position NUMBER;
    3. l_width NUMBER;
    4. BEGIN
    5. IF :system.event_window IN (‘DEMO_FOLDER‘) THEN
    6. app_folder.event(‘WHEN-WINDOW-RESIZED‘);
    7. l_width := get_view_property(‘DEMO_FOLDER_CONTENT‘, width);
    8. set_canvas_property(‘DEMO_FOLDER_CONTENT‘, width, l_width);
    9. l_width := get_view_property(‘DEMO_FOLDER_STACK‘, width);
    10. l_x_position := get_view_property(‘DEMO_FOLDER_STACK‘, viewport_x_pos);
    11. l_x_position := l_x_position + l_width + 0.015;
    12. set_block_property(‘DEMO_FOLDER‘, blockscrollbar_x_pos, l_x_position);
    13. END IF;
    14. END;

    注意必须用代码对内容画布进行调整,因为改变窗口大小时,Form不会自动调整。

  10. 在WHEN-NEW-FORM-INSTANCE中追加:

    1. app_folder.define_folder_block(object_name => ‘DEMO_FOLDER‘,
    2. folder_block_name => ‘DEMO_FOLDER‘,
    3. prompt_block_name => ‘DEMO_PROMPT‘,
    4. folder_canvas_name => ‘DEMO_FOLDER_STACK‘,
    5. folder_window_name => ‘DEMO_FOLDER‘,
    6. disabled_functions => ‘‘,
    7. tab_canvas_name => ‘‘,
    8. fixed_canvas_name => ‘‘);
    9. app_folder.event(‘INSTANTIATE‘);
    10. show_view(‘DEMO_FOLDER_CONTENT‘);

    第一句是Folder申明,根据参数名给出具体值即可,注意tab_canvas_name,我们不用Tab页,所以为空。
    最后一句是因为本例中内容画布上没有可导航的块,所以需要用带码使其显示。





以上是关于EBS FORM进阶1. 文件夹(FOLDER)的主要内容,如果未能解决你的问题,请参考以下文章

EBS FORM进阶3. 在FORM中调用外部功能

EBS FORM进阶3. 在FORM中调用外部功能

EBS FORM进阶2. Checkbox全选反选

EBS Form开发建立一个最简单的Form并部署到到EBS中

EBS FORM功能调整案例

EBS FORM基本2. FORM基本对象