Prompts and Labels - Intergraph Smart Materials - Version 10.1 - Customization & Programming - Hexagon

Intergraph Smart Materials Customization (10.1)

Language
English
Product
Intergraph Smart Materials
Subproduct
Classic
Search by Category
Customization & Programming
Smart Materials/Smart Reference Data Version
10.1

The code samples in this section show how to set the prompts and labels of the items in your screen to be dynamic. Implement this code in the When-New-Form-Instance-Trigger of a form or in a program unit in your library is called by this trigger.

In this example, two loops have been coded that ensure that for each block of your form each item is processed.

Customer prompts cannot contain any (even invisible) blanks or line breaks that are not really needed and that cannot be found in the glossaries. For example if you have a prompt ‘Code’, the item property ‘Prompt’ in the form builder is to be set to ‘Code’ and not to ‘Code ‘ or ‘Code ‘ plus any line break. In screens A.30.11 and A.60.36, you are only able to save ‘Code’ but not ‘Code ‘.

DECLARE

l_cur_block VARCHAR2(30):= GET_FORM_PROPERTY (NAME_IN('SYSTEM.CURRENT_FORM'), FIRST_NAVIGATION_BLOCK);

l_cur_item VARCHAR2(30);

current_prompt m_glossary_details.translated_prompt%TYPE;

l_translated_prompt m_glossary_details.translated_prompt%TYPE;

l_translated_hint m_glossary_details.translated_hint%TYPE;

l_translated_tooltip m_glossary_details.translated_tooltip%TYPE;

BEGIN

WHILE l_cur_block IS NOT NULL LOOP

l_cur_item := l_cur_block || '.' || GET_BLOCK_PROPERTY (l_cur_block, FIRST_ITEM);

/* Loop through items in the block */

WHILE l_cur_item <> l_cur_block || '.' LOOP

IF GET_ITEM_PROPERTY(l_cur_item, ITEM_CANVAS) IS NOT NULL

AND ( GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) IN ('CHECKBOX','BUTTON')

OR ( GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) NOT IN ('CHECKBOX','BUTTON')

AND GET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT) IS NOT NULL

)

)

THEN

/* Getting current prompt or label */

IF GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) = 'CHECKBOX' THEN

IF GET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT) IS NULL THEN

current_prompt := GET_ITEM_PROPERTY (l_cur_item, LABEL);

ELSE

current_prompt := GET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT);

END IF;

ELSIF GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) = 'BUTTON' THEN

current_prompt := GET_ITEM_PROPERTY (l_cur_item, LABEL);

ELSE

current_prompt := GET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT);

END IF;

m_pck_dynamic_labels.get_translated_prompt (current_prompt,

l_translated_prompt,

l_translated_hint,

l_translated_tooltip

);

/* Setting new prompt or label */

/* If no "translation" is found current_prompt and l_translated_prompt are identical */

IF GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) = 'CHECKBOX' THEN

IF GET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT) IS NULL THEN

SET_ITEM_PROPERTY (l_cur_item, LABEL, l_translated_prompt);

ELSE

SET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT, l_translated_prompt);

END IF;

ELSIF GET_ITEM_PROPERTY (l_cur_item, ITEM_TYPE) = 'BUTTON' THEN

SET_ITEM_PROPERTY (l_cur_item, LABEL, l_translated_prompt);

ELSE

SET_ITEM_PROPERTY (l_cur_item, PROMPT_TEXT, l_translated_prompt);

END IF;

IF l_translated_hint IS NOT NULL THEN

SET_ITEM_PROPERTY (l_cur_item, HINT_TEXT, l_translated_hint);

END IF;

IF l_translated_tooltip IS NOT NULL THEN

SET_ITEM_PROPERTY (l_cur_item, TOOLTIP_TEXT, l_translated_tooltip);

END IF;

END IF;

l_cur_item := l_cur_block || '.' || GET_ITEM_PROPERTY (l_cur_item, NEXTITEM);

END LOOP;

/* Navigate to next block in form */

l_cur_block := GET_BLOCK_PROPERTY (l_cur_block, NEXTBLOCK);

END LOOP;

END;