Qu'est-ce que vous voulez faire est pas facile à faire. Si vous souhaitez que les en-têtes de colonne dans Forms soient dynamiques, les en-têtes doivent être peints en tant que champs d'affichage et liés à une table de métadonnées qui stocke les noms de colonnes dans les langues que vous souhaitez prendre en charge. En d'autres termes, vous devez stocker les noms de colonne et tout ce que vous devez afficher par ex. afficher des messages dans des tables à extraire au moment de l'exécution et affichés sur l'écran en fonction d'un paramètre d'exécution transmis à l'écran, par ex. LANGCODE = ENG pour l'anglais ou ARB pour l'arabe
Exemple d'une table de métadonnées:
LANGCODE FORMNAME TABLENAME COLUMNNAME COLUMNNAME_TO_DISPLAY
-------- -------- --------- ---------- ---------------------
ENG ABC123 TABLEA COLUMN1 COLUMN1
ENG ABC123 TABLEA COLUMN2 COLUMN2
ARB ABC123 TABLEA COLUMN2 ???????
ARB ABC123 TABLEA COLUMN2 ???????
Vous entrez simplement la valeur que vous souhaitez afficher sur l'écran dans la dernière colonne du tableau ci-dessus dans la langue que la base de données principale supporte. Notez que si cela permet à l'écran d'avoir des en-têtes et des noms de champs récupérés dynamiquement à l'exécution dans un déclencheur when-new-form-instance, ils ajoutent beaucoup d'effort de maintenance puisque tout ce qui est affiché sur l'écran être mappé à une table quelque part. C'est pourquoi vous trouverez très peu de formulaires d'applications réellement multilingues.
Vous n'avez pas besoin de définir les en-têtes de colonne comme champs d'affichage. Vous pouvez utiliser 'SET_ITEM_PROPERTY ('BLOCK.FIELD', PROMPT_TEXT, 'Nouvelle valeur d'invite')'. – AndyDan