Set_XXX_Property Build-Ins

目录(?)[+]

Build-In List

·  SET_APPLICATION_PROPERTY
·  SET_BLOCK_PROPERTY
·  SET_CANVAS_PROPERTY
·  SET_FORM_PROPERTY
·  SET_ITEM_PROPERTY
·  SET_ITEM_INSTANCE_PROPERTY
·  SET_LOV_PROPERTY
·  SET_MENU_ITEM_PROPERTY
·  SET_PARAMETER_ATTR
·  SET_RADIO_BUTTON_PROPERTY
·  SET_RECORD_PROPERTY
·  SET_RELATION_PROPERTY
·  SET_REPORT_OBJECT_PROPERTY
·  SET_TAB_PAGE_PROPERTY
·  SET_VIEW_PROPERTY
·  SET_WINDOW_PROPERTY


Example

set_item_property

begin
  if :<block_name>.<chk_name>='Y' then 
    set_item_property('<block_name>.<list_item_name>',VISIBLE/UPDATEABLE,PROPERTY_TRUE);
  else
    set_item_property('<block_name>.<list_item_name>',VISIBLE/UPDATEABLE,PROPERTY_FALSE);
  end if;
end; 

or

app_item_property.set_property ('<block_name>.<list_item_name>', enabled/enterable, property_on);


set_block_property

set_block_property ('<block_name>', query_allowed/update_allowed/delete_allowed, property_true);


SET_LOV_PROPERTY

SET_LOV_PROPERTY('inv_serial_lov', GROUP_NAME, 'inv_serial18');


Set_Record_Property

/*
** Built-in: SET_RECORD_PROPERTY
** Example: Mark the third record in the EMP block as if it
** were a queried record.
*/
BEGIN
Set_Record_Property( 3, ’EMP’, STATUS, QUERY_STATUS);
END;


-----------------------------------------------------------------------------------------------------------------------

Difference Between Set_Item_Instance_Property and Set_Item_Property
SET_ITEM_PROPERTY:Block中的所有Records
SET_ITEM_INSTANCE_PROPERTY:对当前Record起作用

If you want to turn fields 'on' and 'off' depending on information in a row then use 'set_item_instance_property(enterable)' in the Post_Query trigger on the block

IF :BLK_DISPLAY.METER_TYPE_ID = 'H' THEN
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,VISUAL_ATTRIBUTE,'VA_DISPLAY_ONLY');
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,NAVIGABLE,PROPERTY_FALSE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,VISUAL_ATTRIBUTE,'VA_UPDATE');
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,NAVIGABLE,PROPERTY_TRUE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_TRUE);
ELSIF :BLK_DISPLAY.METER_TYPE_ID = 'M' THEN
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,VISUAL_ATTRIBUTE,'VA_UPDATE');
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,NAVIGABLE,PROPERTY_TRUE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.MILES',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_TRUE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,VISUAL_ATTRIBUTE,'VA_DISPLAY_ONLY');
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,NAVIGABLE,PROPERTY_FALSE);
  SET_ITEM_INSTANCE_PROPERTY('BLK_DISPLAY.HOURS',CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
END IF;


Reference:

Oracle Forms Developer Form Builder Reference, Volume 1 - Release 6i : http://docs.oracle.com/pdf/A73074_01.pdf

1、问题和解决方法 (1)可以运行python3 test.py [选项,例如-s1, S],它会重新编译项目,而不必在/test和/build间来回切换。 如果发现没有build,要使用mkdir build创建这个文件夹,而不是像指导书说的cd进去。框架本身没有提供/build。 如果实验二的时候在build下遇到了报错说版本不匹配,可以把CMakeLists.txt中的cmake_minimum_required(VERSION 3.20)更改为3.10,好像只有实验二有这个问题,可能是写的时候敲歪了。 如果报错说缺少某些文件,可以尝试检测CMakeLists.txt中的 # --------------------- from src --------------------- aux_source_directory(./src/ir IR_SRC) add_library(IR ${IR_SRC}) aux_source_directory(./src/tools TOOLS_SRC) add_library(Tools ${TOOLS_SRC}) # --------------------- from src --------------------- 保证没有注释掉这些资源文件路径,然后重新make。 (2)只有重新编译后再运行run.py或score.py才能应用更改。如果运行test的时候发现S选项会报错,参考test.py进行修改 它本身的结构其实比较简单,先后调用了编译,run.py和score.py,并没有做什么别的工作 (3)如果想只运行单个测试点,可以修改run.py的以下位置: for src in src_files:     fname, ftype = src.split('.')        if("XX" not in fname):         continue               cmd = ' '.join([compiler_path, testcase_dir + src, step, "-o", output_dir + fname + "." + oftype])     if is_windows:         cmd = cmd.replace('/','\\')     cp = subprocess.run(cmd, shell=True, stderr=subprocess.PIPE, stdout=subprocess.DEVNULL)     if cp.returncode != 0:         record[src] = {"retval": cp.returncode, "err_detail": cp.stderr}     else:         record[src] = {"retval": 0}     print(src, record[src]) XX是测试点的序号,例如95。这句话的意思是如果测试点的名称里面没有95就什么都不做 (4)如果评测的时候卡死了,但控制台又没输出是哪个测试点,可以修改score.py的以下位置:     if step == "-s0":         for i in ["basic", "function"]:             output_dir = output_base + i + '/'             ref_dir = ref_base + i + '/'             if os.path.exists(output_dir):                 files = os.listdir(output_dir)                 for file in files:                     if not (file[-3:] == ".tk"):                         continue                     cmd = ' '.join(["diff", ref_dir + file, output_dir + file, '-w'])                     if is_windows:                         cmd = cmd.replace('/','\\')                     # print(cmd)                     print(file, "*******************************")                     cp = subprocess.run(cmd, shell=True, stderr=subprocess.DEVNULL, stdout=subprocess.PIPE)                     if cp.returncode != 0:                         record[file] = {"retval": cp.returncode, "err_detail": "diff test failed"}                     else:                         score += 1                         record[file] = {"retval": 0}                     print(file, record[file]) 这样它就会在测试每个样例前先打印名称。注意此处修改的是-s0的部分,如果在其他实验卡死了就修改对应的位置 (5)如果发现写的cout,哪怕是cerr也并没有在控制台输出任何内容,可以在感觉有问题的地方加上: FILE *trace = fopen("trace", "w"); fprintf(trace, "%s\n", toString(ins->op).c_str()); fclose(trace); // assert(0 && "xxx"); 意思是新建一个叫trace的文件,然后把想打印的东西打印到这个文件里面去。"w"表示写模式,它会直接覆写原有的trace,没有就新建。 如果想在文件最后打印而不是完全覆写,可以使用"a"。如果程序正常结束了,那么不写fclose也会自动保存trace,无伤大雅。 但如果中途因为assert之类的问题挂掉了,那么不写fclose,想打印的内容就不会被实际写入文件,可能是留在缓冲区之类的地方, 然后就随着程序结束清空掉了。所以如果在trace里也没找到想要的输出,可以在报错的位置之前加上fclose。 assert报错的时候控制台会告诉是哪个文件的哪一行触发了这个断言,或者可以使用: python3 xx.py [选项] | grep 'xxx' 其中xxx是写在assert里面的内容的一部分,例如对于assert(0 && "invalid"),可以填'0'或者'inv'之类的 |是管道符,用于将符号前的指令在控制台的输出用作符号后的指令的输入。grep则是linux本身提供的文本搜索指令。这条指令会筛选并高亮所搜索的输出内容。如果不幸错麻了,筛选完还是看不清,可以使用: python3 xx.py [选项] | grep 'xxx' > GG.txt 输出方向符>会将输出重定位到GG.txt这个文件中,而不是打印在终端。>是覆盖,>>是追加。 类似上面这种,举例说明写编译器实现时候可能遇见的问题以及解决方法
最新发布
06-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值