1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| PROCEDURE MonTableInfoXY(LOCAL sAliasTable est une chaîne, evt, sValeurDefaut est une chaîne = "-1;-1")
LOCAL
nNbUnderscore est un entier
nLigne est un entier
nColonne est un entier
EXTERNE ElementEnCours
SI evt=Null ALORS
//pas d'évènement, valeur par défaut
RENVOYER sValeurDefaut
FIN
//Récupère le champs qui a déclenché l'évènement
//IE ?
SI NavigateurNom()~="Microsoft Internet Explorer" ALORS
//Oui
ElementEnCours=evt.srcElement
SINON
ElementEnCours=evt.target
FIN
//champ trouvé ?
SI ElementEnCours=Null ALORS
//non, donc valeur par défaut
RENVOYER sValeurDefaut
SINON
//recherche de l'éléments le plus bas
//info sur "childNodes" : http://help.dottoro.com/ljvaqlwx.php#childNodes
//tant qu'il y a des fils
TANTQUE ElementEnCours.children.length>0
//on prends le dernier fils
ElementEnCours=ElementEnCours.children[ElementEnCours.children.length]
FIN
//de début de l'id est égale au nom de l'alias de la table ?
SI ElementEnCours.id[[A Taille(sAliasTable+"_")]] = sAliasTable+"_" ALORS
//Oui
//Nb de undescore dans cette partie de id
nNbUnderscore = ChaîneOccurrence(ElementEnCours.id,"_")
//Au moins deux underscore (_) ?
SI nNbUnderscore >= 2 ALORS
EXTERNE oGetObjetChamp
//récupère le champ par rapport au nom de l'alias
pclTable est un objet dynamique = oGetObjetChamp(sAliasTable)
//converti le n° de la ligne trouvé en valeur absolu
nLigne = pclTable.nRelative2Absolue(Val(ExtraitChaîne(ElementEnCours.id,2,"_",DepuisFin))) + 1
//N° de colonne
nColonne = Val(ExtraitChaîne(ElementEnCours.id,1,"_",DepuisFin))+1
RENVOYER nLigne+";"+nColonne
SINON
//pas 2 undescores on a pas trouvé de cellule
RENVOYER sValeurDefaut
FIN
SINON
//non, le nom (alias) de la table n'a pas été trouvé
//pour les tables non Ajax
//L'id du parent est le nom de la table et le n° de la ligne ? (<AliasTable>_<NumeroColonne>)
//de début de l'id est égale au nom de l'alias de la table ?
SI ElementEnCours.parentNode.id[[A Taille(sAliasTable+"_")]] = sAliasTable+"_" ALORS
//Nb de undescore dans cette partie de id
nNbUnderscore = ChaîneOccurrence(ElementEnCours.parentNode.id,"_")
//Au moins deux underscore (_) ?
SI nNbUnderscore >= 2 ALORS
//récupère le champ par rapport au nom de l'alias
pclTable est un objet dynamique = oGetObjetChamp(sAliasTable)
//converti le n° de la ligne trouvé en valeur absolu
nLigne = pclTable.nRelative2Absolue(Val(ExtraitChaîne(ElementEnCours.parentNode.id,2,"_",DepuisFin))) + 1
//N° de colonne
nColonne = Val(ExtraitChaîne(ElementEnCours.id,1,"_",DepuisFin))+1
SINON
//oui, récupération du n° de ligne
nLigne = Val(ExtraitChaîne(ElementEnCours.parentNode.id,1,"_",DepuisFin))
// le numéro de la colonne, c'est l'index (cellIndex) en cours
nColonne=ElementEnCours.cellIndex+1
FIN
RENVOYER nLigne+";"+nColonne
SINON
//donc valeur par défaut
RENVOYER sValeurDefaut
FIN
FIN
FIN |
Partager