|
Enumérer les champs d'un champ Disposition |
Débuté par Yvan, 19 mar. 2018 17:42 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 202 messages Popularité : +6 (6 votes) |
|
Posté le 19 mars 2018 - 17:42 |
Bonjour,
J'ai besoin d'énumérer les champs contenus dans un champ disposition par programmation. Je ne trouve pas le moyen de le faire. La propriété ..occurence me renvoi bien le nombre d'occurences, mais je ne trouve pas le moyen de savoir de quel type sont les champs de chaque occurence comme on peut le savoir avec les occurences d'un sélecteur ou d'un interrupteur :
Procedure EnumOptions(sFieldName)
POUR i = 1 _À_ {sFieldName,indChamp}..Occurrence :stField.sField = sFieldName :stField.nInd = 0 SI ChampExiste(sFieldName) ALORS :stField.nType = {sFieldName}..Type :stField.sWording = {sFieldName}..Libellé :stField.sTipTool = {sFieldName}..Bulle FIN TableauAjoute(:tabFields,:stField) FIN J'ai aussi essayé avec EnumèreSousElément, mais il ne semble pas qu'une constante de type enumDisposition existe, pour des boites à outil ou des onglets, j'utilise ceci que je ne peux pas pour le disposition:
Procedure EnumVolets(sObjectName)
sFieldName est une chaîne sObject2Name est une chaîne sField2Name est une chaîne nFlag est un entier = enumPremier
SELON {sObjectName}..Type CAS typOnglet : nFlag+=enumVolet CAS typBoîteAOutils : nFlag+=enumBoiteOutils FIN
sFieldName = EnumèreSousElément(sObjectName, nFlag) TANTQUE sFieldName <> "" SI sFieldName = "" ALORS SORTIR :stField.sField = sObjectName :stField.nInd = sFieldName :stField.nType = {sObjectName}..Type TableauAjoute(:tabFields,:stField) sObject2Name = sObjectName sField2Name = EnumèreSousElément(sObjectName+"."+sFieldName, enumPremier) TANTQUE sField2Name<>"" :GetType(sObject2Name+"."+sField2Name) sField2Name = EnumèreSousElément(sObjectName+"."+sFieldName) FIN sFieldName = EnumèreSousElément(sObjectName) FIN
Bref, si vous avez un truc pour parcourir les champs contenus dans le champ disposition, afin d'en déterminer leur type, leur libellé et leur bulle d'aide, toute piste est la bienvenue! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 304 messages Popularité : +47 (51 votes) |
|
Posté le 20 mars 2018 - 14:05 |
Salut Yvan,
Voici le code à adapter pour ton besoin, mais le plus simple c'est ceci:
sFieldName est une chaîne nType est un entier sLabel est une chaîne sTipTool est une chaîne
POUR i = 1 _À_ DISP_Test..Occurrence sFieldName = EnumèreChamp(DISP_Test, i) sLabel = {sFieldName, indChamp}..Libellé sTipTool = {sFieldName, indChamp}..Bulle nType = {sFieldName, indChamp}..Type FIN
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 202 messages Popularité : +6 (6 votes) |
|
Posté le 20 mars 2018 - 16:55 |
Super Daryl, Ça fonctionne. Merci! Yvan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 202 messages Popularité : +6 (6 votes) |
|
Posté le 08 juin 2018 - 08:26 |
Bonjour,
C'est moi ou bien EnumèreSousElément ne détecte plus un champ disposition sur une fenêtre? Ca a fonctionné, mais depuis l'update 2 ou 3 ça ne fonctionne plus.
Ce code me détectait bien tout les champs de ma fenêtre:
Procedure EnumFields(sObjectName = FenEnExécution())
sFieldName est une chaîne
sFieldName = EnumèreSousElément(sObjectName, enumPremier ) TANTQUE sFieldName<>"" :GetType(sObjectName+"."+sFieldName) sFieldName = EnumèreSousElément(sObjectName) FIN Mais maintenant, plus le champ disposition. J'ai testé sur une fenêtre avec juste la disposition placée dessus, même pas dans un onglet ou autre ...
Une idée? |
| |
| |
| | | |
|
| | |
| |
Posté le 12 juin 2018 - 16:31 |
Bonjour, depuis la version 23 53k, je constate de gros problèmes de régression avec la fonction EnumereSousElement() avec un champ ONGLET. Nous avons un ticket est ouvert avec le numéro 109042/284035 et 109043 : la fonction EnumereSousElement() est capable dans cette version de lister un champ qui n'existe pas !
Malheureusement, la collection des tickets PcSoft continue : 47 tickets ouverts, en attente de corrections ! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 202 messages Popularité : +6 (6 votes) |
|
Posté le 12 juin 2018 - 21:11 |
Bonjour,
En effet, j'ai aussi soumis le problème au ST, j'ai aussi reçu un n° d'incident (107956). Mes constatations de régression sont: - plus de détection des champs disposition - plus de détection des champs indicés - des détections farfelues des champs sur les onglets, surtout lorsque ceux-ci contiennent des champs indicés - les colonnes sont énumérées deux fois, une fois mafenetre.matable.macolonne et une seconde fois mafenetre.macolonne - plus ce qui m'a sans doute échappé ...
C'est critique pour moi car j'utilise cette fonction sur toutes les fenêtres d'un de mes projets pour effectuer des traductions dynamiques de mes champs, et du coup, ça ne va plus du tout.
Tout ça est fort embêtant, surtout lors d'un update 2 ou 3, ce qui ne laisse plus beaucoup d'opportunité pour une correction rapide et efficace.
Perso je vote pour une version 24 avec 924 corrections et 0 nouveautés. Je crois qu'aucun développeur ne leur en voudra. |
| |
| |
| | | |
|
| | | | |
| | |
|