Visual Attributes

Guyz,
i have tubular block and one display item on canvas which shows the number of days.after querying the records i want to display the below attributes according to number of days display in remain days.
which trigger should i use for this?
im using forms 10g. anyone give me any linnk or any pdf where i can read which trigger where i can use.
IF :MN_EMP_CIVIL_ID.REMAIN_DAYS <30 OR :MN_EMP_CIVIL_ID.REMAIN_DAYS=30 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
ELSIF
     :MN_EMP_CIVIL_ID.REMAIN_DAYS >31 OR :MN_EMP_CIVIL_ID.REMAIN_DAYS=60 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     ELSIF
     :MN_EMP_CIVIL_ID.REMAIN_DAYS >61 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
END IF;

I have two block on control block i put two fields FRM_HIJRI and HIJRI_TO
and i put the below code on pre_query trigger on control block.
GO_BLOCK('MN_EMP_CIVIL_ID');
SET_BLOCK_PROPERTY('MN_EMP_CIVIL_ID',DEFAULT_WHERE,'EXP_DATE BETWEEN :CONTROL.FRM_HIJRI AND :CONTROL.HIJRI_TO');
EXECUTE_QUERY;and on another block mn_emp_civil_id post_query triiger
:SRNO:=GET_BLOCK_PROPERTY('MN_EMP_CIVIL_ID',CURRENT_RECORD);
SELECT TO_CHAR(TO_DATE(SYSDATE,'YYYY/MM/DD'),'YYYY/MM/DD', 'NLS_CALENDAR = '''||'ARABIC HIJRAH''')INTO :MN_EMP_CIVIL_ID.H_DATE  FROM DUAL;
SELECT TO_DATE(TO_CHAR(:MN_EMP_CIVIL_ID.EXP_DATE,'YYYYMMDD'),'YYYY/MM/DD', 'NLS_CALENDAR = '''||'ARABIC HIJRAH''') INTO :MN_EMP_CIVIL_ID.G_DATE  FROM DUAL;if i add the below code in post_query block level its giving me the below error.
IF :MN_EMP_CIVIL_ID.REMAIN_DAYS <30 OR :MN_EMP_CIVIL_ID.REMAIN_DAYS=30 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_RED');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_RED');
ELSIF
     :MN_EMP_CIVIL_ID.REMAIN_DAYS >31 OR :MN_EMP_CIVIL_ID.REMAIN_DAYS=60 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_YELLOW');
     ELSIF
     :MN_EMP_CIVIL_ID.REMAIN_DAYS >61 THEN
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.SRNO', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMPID', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EMP_NAME', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.CIVIL_ID#', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.ISU_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.EXP_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.G_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.REMAIN_DAYS', VISUAL_ATTRIBUTE, 'VA_GREEN');
     SET_ITEM_INSTANCE_PROPERTY('MN_EMP_CIVIL_ID.H_DATE', VISUAL_ATTRIBUTE, 'VA_GREEN');
END IF;
ERROR: frm-40735:post_query trigger raised unhandled exception ora-06502but when i remove the above attribute code its working properly.
Regards
mozam

Similar Messages

  • How to use visual attribute property for the tab canvas

    Hi all,
    i wanted to use set_tab_page_property ,and a visual attribute property for that
    respective tab page .
    but is saying to many declarations to match up . how will i able to do that.
    can any one helip me out ...
    example....
    i wanted to set the page name (just name of the tab page) red color when i query the form under some conditions .
    can anyone help me out in this.
    thanks in advance
    vardhi

    Hi all,
    i wanted to use set_tab_page_property ,and a visual attribute property for that
    respective tab page .
    but is saying to many declarations to match up . how will i able to do that.
    can any one helip me out ...
    example....
    i wanted to set the page name (just name of the tab page) red color when i query the form under some conditions .
    can anyone help me out in this.
    thanks in advance
    vardhi

  • Defining global Visual Attribute groups

    Hi,
    We are currently in the process of moving our forms application from Oracle 6i (client/server) to 10g Webforms (we do not use the designer). The application consists of close roundabout 400 windows.
    In the 6i version we declared some global Visual Attributes in a resource file via the Oracle Terminal program. Now that we moved the forms to 10g these visual attributes groups are missing and its making certain functionalities fail like for example highligting query mode.
    My question is how do we most easily incorporate the missing visual attributes into all the webforms ?
    Kind regards,
    Bo

    As the number of forms is quite large for manual processing, even if the solution already provided is adequate. You may use the Oracle Forms API to automate the task. Theres the ORCL Toolbox applications in top of that API that may help You.

  • Visual attribute for current item

    How can i set the visual attribute of the current item in multi block form so that when user navigate through item in a form its background colour is changed and user can easily trace where the cursor is ?

    1- I have three list box on the form as well so whether post-text-item works over therei have no issues with this and it is working fine in my forms list box
    2- and i have 3 datablock among which 2nd and thid datablock is multirecord datablock where i set current record visual attribute so what is the behaviour @ run time either current record Visual attribute override current item VA or it works fine
    it is working perfectly in multi record also..you need to remember in post text trigger use the same visual attribute used for current record visual attribute

  • Current Record Visual Attribute

    Hallo,
    In a Dev.2.1 Form I have defined a Visual attribute (VA01 - black on yellow) and then in a Data Base block I have assigned VA01 to the 'current record' property.
    One item of that block is not a Data Base one. When I scroll the rows of the Base Table only this item isn't affected by the current record visual attribute, i.e. it remains "black on white".
    Anyone kwnows why ?
    Thanks in advance.
    Dino.

    The 'Current record Visual attribute' property of that block is already set to VA01. The point is that all of the items of that block iherit the attribute, except the one I said, which doesn't belong to the base table. I ask if this behaviour is normal, and how to do to have also this item to be affected by the same visual attribute !
    Thanks.

  • Display item visual attribute

    Hello.
    Is there a way to use set_item_instance_property on display item?
    Or change font color of disabled text item?
    Thanks.

    Set_item_instance_property is the new built-in. Don't use the old display_item. Help says: "Maintained for backward compatibility only."
    Use the new one. There are all properties in the built-in you need for changing the visual attributes.
    try it
    Gerd

  • Ask: how to set visual attribute

    Hi guys,
    I have a data block named BLOCK1, in BLOCK1 there is a text item named ITEM1.
    I display it in tabular form, showing 10 records.
    I wanted the record where the cursor's located shown in different color.
    For example if the cursor at record #1, record #1 therefore is shown in RED. If the cursor is moved to record #2 then record #2 will be shown in RED and record #1 color will revert back to normal.
    I tried putting WHEN-NEW-RECORD-INSTANCE trigger at BLOCK1 with the following code:
    set_item_property('BLOCK1.ITEM1', VISUAL_ATTRIBUTE, 'WHITE');
    set_item_instance_property('BLOCK1.ITEM1', current_record, VISUAL_ATTRIBUTE , 'RED');
    I thought set_item_property('BLOCK1.ITEM1', VISUAL_ATTRIBUTE, 'WHITE') will set all records of ITEM1 to 'WHITE', then the set_item_instance_property('BLOCK1.ITEM1', current_record, VISUAL_ATTRIBUTE , 'RED') will set the particular record where the cursor is in to 'RED'...
    It doesn't work. All the records that has been set to 'RED' by set_item_instance_property will stay red, set_item_property does not revert them to white.
    Any ideas?

    In the property palette of your block there is "current record visual attribute".
    Assign a valid visual_attribute and then when you move from one record to another it will be applied to the current record.
    Hope it helps you,
    Fabrizio
    If this answer is helpful or correct, please mark it. Thanks.

  • Visual attribute through get_item_property

    Hi People,
    I use forms 10g.While designing the form I wish to assign VISUAL ATTRIBUTE property for my TEXT_ITEM.So i tried wrinting the following code in WHEN-BUTTON-PRESSED of a push button.The code as follows,
    declare
         vlbl varchar(20);
         vatt varchar(20);
    begin
    vatt:=get_item_property('VA7',visual_attribute);
    vlbl:=     get_item_property(':block3.TEXT_ITEM6',vatt);
         end;But it shows me an error as,
    FRM-40105: Unable to resolve reference to item.
    Pls can u help me how to assign the Visual Attribute through get_item_property.
    With Regards
    VIDS

    I tried the same but I am getting FRM-41011: Undefined Attribute.Yes, because you are trying with the visual attribute group property and as i check the GET_ITEM_PROPERTY help it should have work. But also the same error as you mentions Undefined Attribute.
    I also checked the value returned by get_item_property('VA7',visual_attribute) using message which is 'CUSTOM' Yes, it is returns the CUSTOM either you specify the visual attribute group or not.
    So in this case the GET_ITEM_PROPERTY is returning "the name of a logical attribute defined in the resource file" is what I feel.I guess.
    Any idea how "the name of a named visual attribute" can be obtained.The task as the code is looking can be achieved by the following code.
    DECLARE
      vAttribName VARCHAR2(100);
    BEGIN
      vAN:=GET_ITEM_PROPERTY('ITEM_NAME',CURRENT_RECORD_ATTRIBUTE);
      SET_ITEM_PROPERTY('ITEM_NAME',CURRENT_RECORD_ATTRIBUTE,vAttribName);
    END;So, it will set the current record visual attribute property dynamically by the code.
    Also would like to know about resource file? What is it.Well, did not get experience about this matter. And haven't tried before. But maybe documentation will help.
    -Ammad

  • Gettng item property - prompt visual attribute

    have set the prompt visual attribute to 'ACTIVE_COL'
    SET_ITEM_PROPERTY ('TEST',PROMPT_VISUAL_ATTRIBUTE, 'ACTIVE_COL')
    but when I try to get the value back it return 'CUSTOM'
    GET_ITEM_PROPERTY ('TEST',PROMPT_VISUAL_ATTRIBUTE)
    Why???

    I have overcome this problem by setting item property in form design to 'ACTIVE_COL' then change it back to 'DEFAULT'
    it works fine.

  • About Visual Attributes

    1.can we create visual attributes dynamically like record groups.
    2.In forms there is any bulit in which gives the RGB format of particular color,i want to change background color at runtime.
    set_canvas_property(:system.mouse_canvas,BACKGROUND_COLOR,'darkred');
    how i can change the background color of canvas at runtime.
    thank's in advance

    Though you can not create the va at runtime, if you know the possible combinations or may be 10 visual attributes, u can create in the form and set it dynamically at run time. (set_item_property )
    Having said that you can not have any Visual attribute for a canvas. You can have only property class. VA is for text items... PC can not be set at run time.
    Best Regards
    Rajesh Alex

  • Visual Attribute

    Dear Experts,
    I have two Items. Now, when I type 'A' in 1st text Item, then automatically visual attribute of the 2nd display Item should be changed to 'RED' (e.g.). The 2nd dispaly Item will return the same value as 1st text item(i.e. 'A').
    Note: I have just type 'A', My cursor is still in 1st text Item. It is not in 2nd item(display)
    I wud much appreciate if anyone help me out on this.
    Thanx in advance.
    Bhaveh

    I am now rather confused as your second message appears to be different requirement to your first.
    The method I had in mind is to make your item1 length one and with AUTOSKIP on.
    WHEN-VALIDATE-ITEM on item1
    :item2 := :item2||:item1;
    WHEN-NEW-ITEM-INSTANCE on item2
    set_item_instance_property('item2',current_record,visual_attribute,'red');
    -- Put Any other code here you want to fire after each character
    :item1 := null; -- makes room for next character to be typed.
    go_item('item1');
    Thus the cursor appears to stay in item1 where any number of charcters can be typed, although they appear in item2. The trigger on item2 fires after each charcter and can be made to do whatever you want.

  • Visual attribute for records in MULTISELECT block

    Hi,
    For some type of records I need to set background colour yellow.
    The block has property set to QMSSO$MSEL_BLOCK.
    I am using below code for each field in the block displayed:
    POST_QUERY for the block:
    set_item_instance_property('block.column_name',l_cur_rec, visual_attribute, 'QMS$BLACK_ON_YELLOW');
    Also on when-new-record-instance I have added following code for getting the yellow colour on select:
    if upper(:VANN.MESSAGE_NAME) LIKE '%PROB%'
    then
    qms$user_prefs.set_va_selected_record('QMS$BLACK_ON_YELLOW');
    else
    qms$user_prefs.set_va_selected_record('QMS$WHITE_ON_DARKBLUE');
    end if;
    But problem is that when we navigate from record with background Yellow to any other record displayed the visual attribute is change back to Grey (yellow colour disappears).
    This functionality must work for multiselect block. Is there any headstart function/utility which can help me to resolve the problem.

    1- I have three list box on the form as well so whether post-text-item works over therei have no issues with this and it is working fine in my forms list box
    2- and i have 3 datablock among which 2nd and thid datablock is multirecord datablock where i set current record visual attribute so what is the behaviour @ run time either current record Visual attribute override current item VA or it works fine
    it is working perfectly in multi record also..you need to remember in post text trigger use the same visual attribute used for current record visual attribute

  • Changing visual attribute in Enter Query mode

    Hello, I want to change visual attribute of all items in the first record when the user presses button for Enter_Query. I want that the user sees that the form is in enter query mode and it "waits" for the input of criteria. My code (copied from Help and modified) in trigger WHEN_BUTTON_PRESSED:
    DECLARE
    cur_itm VARCHAR2(80);
    cur_block VARCHAR2(80);
    BEGIN
    ENTER_QUERY;
    cur_block := :System.Cursor_Block;
    cur_itm := Get_Block_Property( cur_block, FIRST_ITEM );
    WHILE ( cur_itm IS NOT NULL ) LOOP
    cur_itm := cur_block||'.'||cur_itm;
    Set_Item_Instance_Property( cur_itm, CURRENT_RECORD, VISUAL_ATTRIBUTE,'yellow');
    cur_itm := Get_Item_Property( cur_itm, NEXTITEM );
    END LOOP;
    END;
    where yellow is the name of my visual attribute.
    The problem is that I need to press the button TWICE to color the record.
    Can anybody help me with this problem?
    Natasa

    (Wrong forum).
    The problem is that enter_query stops executing your procedure until
    another action ist started by the user.
    You must create a short-time timer before issuing enter_query and set
    your colour scheme in the when-timer-expired-trigger.

  • Changing row's visual attribute

    Hi,
    I am populating a multi block record with a cursor, i have a field called read which holds value Y or N, if the value is Y then do nothing and if the value is 'N" then make that entire row in bold fonts. for this i have created a visual attribute group having its foreground font weight as "BOLD' i know what to do , but i dont know where to do it,,item level,block level or form level and in which trigger should i use it?.am using forms 6i.please suggest some methods to do it.

    Hi,
    Just for additional reference, to set a visual attribute to the active record, find the data block node, the selected block, open the block properties, scroll to find the "Records" sections and change the property "Current record visual attribute group"
    cheers,
    Hugo

  • Dynamic visual attributes/multi-row blocks

    We're using Headstart, Des2k V6.0.3.8. If you set preference CURREC = multi record block, you get the current record visual attribute (cg$current_record) attached to all displayed items in multi-row blocks. From the Headstart object library, these items also inherit a visual attribute of qms$item_font.
    At runtime, Headstart code is invoked from the block's post-query trigger - this code dynamically assigns a readonly visual attribute to all items that are insert only, or the qms$item_font va to items that are update only. (Incidentally, it seems a bit strange that no va is assigned to items that are neither insertable nor updateable).
    Assigning the va in this way seems to override the current record va for these items, which looks a little strange at runtime. I would prefer to see the current record va overriding the readonly/item_font va. In a future Headstart release, it would be nice if this functionality was configurable, but in the meantime can you suggest the easiest way of making this change to the Headstart code? I think it will be necessary to specifically set the va to stnd/readonly/current record in the when-new-record-instance trigger, & reset it on the post-record trigger. Once va's are being set dynamically, the current record attribute is pretty useless in multi-row blocks.
    Incidentally - we've also changed the behaviour of va's in query mode processing. We wanted the query mode va to override the current record va; qms$record.highlight_items wasn't setting the selected va unless items have a current record attribute of DEFAULT. We wanted query mode to look the same regardless how many rows are in the block; it also looked a little odd in a multi-row block with overflow items, where the overflow items were being highlighted but the rest of the block wasn't. It would be nice if this was also a configurable option.

    Cheryl,
    Good point! It does look a bit odd. I'll take this into consideration for HSD6i.
    To customize your app, try the following.
    Copy qms$event_data_block from qmsevh50.pll to your application library.
    Copy procedure set_nav_items_exg_record from the qms$record package in qmslib50.pll to your application library -AND GIVE IT A NEW NAME- like set_nav_items_custom.
    Change your copy of qms$event_data_block to call this new procedure in the post-query event.
    Modify set_nav_items_custom as follows.
    ============================================
    procedure set_nav_items_custom
    ( p_block in varchar2
    , p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    l_first_io_item varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    if l_first_io_item is null
    then
    l_first_io_item := l_item_name;
    end if;
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    set_item_instance_property
    ( l_item_name,p_recno,navigable
    , property_false);
    /* customization */
    if get_item_property(l_item_name
    , current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    /* end customization */
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    /* customization */
    end if;
    /* end customization */
    else
    -- Item is update-only, insert not
    -- allowed */
    set_item_instance_property
    (l_item_name,p_recno
    ,navigable,property_true);
    /* customization */
    if get_item_property(l_item_name
    ,current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    /* end customization */
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    /* customization */
    end if;
    /* end customization */
    end if;
    end loop;
    -- 18-1-1999: If block only contains no
    -- updatebale items, there are navigable
    -- items left.
    -- If this is the case make first
    -- insert-only item navigable again.
    if get_block_property(p_block,enterable) =
    'FALSE'
    then
    if l_first_io_item is not null
    then
    set_item_instance_property
    (l_first_io_item,p_recno
    ,navigable,property_true);
    end if;
    end if;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_custom');
    end set_nav_items_custom;
    ============================================
    Next, as you suggested, add WHEN-NEW-RECORD-INSTANCE and POST-RECORD triggers to handle movement from one record to the next.
    WHEN-NEW-RECORD-INSTANCE
    ============================================
    procedure set_nav_items_wnri
    ( p_block in varchar2
    , p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    if get_item_property(l_item_name
    , current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    else
    set_item_instance_property
    (l_item_name,p_recn o
    ,visual_attribute
    ,get_item_property(l_item_name
    , current_record_attribute));
    end if;
    else
    -- Item is update-only, insert not
    -- allowed */
    if get_item_property(l_item_name
    ,current_record_attribute) is null
    or p_recno <> :system.cursor_record
    then
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    else
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,get_item_property(l_item_name
    , current_record_attribute));
    end if;
    end if;
    end loop;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_wnri');
    end set_nav_items_wnri;
    ============================================
    For the POST-RECORD trigger, you will have to modify your object library since this trigger is not included by default. Add the trigger to the object library CGSO$BLOCK_MR.
    Then add the POST-RECORD event to your copy of qms$event_data_block.
    Finally, add a procedure for the POST-RECORD trigger.
    ============================================
    procedure set_nav_items_pr
    (p_block in varchar2
    ,p_recno in number default current_record
    is
    l_rg_id recordgroup;
    l_rgc1_id groupcolumn;
    l_rgc2_id groupcolumn;
    rg_rows number;
    l_item_flag varchar2(1);
    l_item_name varchar2(100);
    l_first_io_item varchar2(100);
    begin
    qms$block.init_block_rg
    ( p_block,false,l_rg_id,l_rgc1_id,
    l_rgc2_id, rg_rows);
    if id_null(l_rg_id)
    then
    -- no insert-only or update only items
    -- in block
    return;
    end if;
    for j in 1..rg_rows loop
    l_item_name := get_group_char_cell
    (l_rgc1_id, j );
    l_item_flag := get_group_char_cell
    (l_rgc2_id, j );
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    if l_item_flag = 'I'
    then
    -- Item is insert-only, update not
    -- allowed
    -- Change background color to
    -- read-only.
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$user_prefs.get_va_readonly_item);
    else
    -- Item is update-only, insert not
    -- allowed
    set_item_instance_property
    (l_item_name,p_recno
    ,visual_attribute
    ,qms$config.get_stnd_font);
    end if;
    end loop;
    exception
    when form_trigger_failure then raise;
    when others then
    qms$errors.unhandled_exception
    ('qms$block.set_mav_items_pr');
    end set_nav_items_pr;
    ============================================
    Regards,
    Lauri

  • Reg: visual attribute for list item

    hi frs,
    i have created a listitem i have used
    APP_ITEM_PROPERTY2.SET_PROPERTY('list4',VISUAL_ATTRIBUTE, 'color');
    in keylistval Trigger.
    when i select one particular item in the list it should have background color mentioned in the VISUAL_ATTRIBUTE 'color'.
    but what is happening is when i select one particular item visual attribute is set to all items in list.
    why it is so?
    how can i solve this problem.
    any one help pls.
    Thanks
    Rajesh

    1- I have three list box on the form as well so whether post-text-item works over therei have no issues with this and it is working fine in my forms list box
    2- and i have 3 datablock among which 2nd and thid datablock is multirecord datablock where i set current record visual attribute so what is the behaviour @ run time either current record Visual attribute override current item VA or it works fine
    it is working perfectly in multi record also..you need to remember in post text trigger use the same visual attribute used for current record visual attribute

Maybe you are looking for