PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Quelle cause ?
Quelle cause ?
Started by GpEp, Aug., 09 2022 12:03 PM - 9 replies
Registered member
45 messages
Posted on August, 09 2022 - 12:03 PM
Bonjour à tous,

Ce morceau de code simule un clic droit sur un champ HTML affichage pour ouvrir le menu contextuel de ce champ HTML.

Menu contextuel ouvert




En test ce code fonctionne très bien
Multitâche(-1)
EnvoieTouche("{BTNDROIT,500,500}",Handle(FI_NAVIGATEUR.HTM_BROWSER))
EnvoieTouche(RC)

Par contre en éxécution de la phase exécutable ...
- le curseur se positionne correctement
- la flêche du curseur est bien visible
mais le menu ne s'ouvre pas !

Je ne comprends pas pourquoi malgré mes recherches.
Pouvez-vous me donner une raison de ne pas fonctionner ou une idée à chercher ?
Merci d'avance
Registered member
3,334 messages
Popularité : +93 (137 votes)
Posted on August, 09 2022 - 12:30 PM
Si tu mets ton HTML dans une fenêtre principale
Mais pas dans une fenêtre interne
Est ce que cela fonctionne ?
Registered member
45 messages
Posted on August, 09 2022 - 3:29 PM
Bonjour Popoy , et merci de considérer ma question.
Pardonnes-moi d'avoir tardé mais ta simple question m'a obligé à créer un petit projet simpliste pour tester le champ HTML
avec une plus simple utilisation.

Effectivement toutes mes utilisations de la fonction envoietouche ( j'en ai teste plusieurs ) fonctionnent bien en phase exécutable,
tant pour agir sur des boutons externes au champ HTML, que pour les actions sur les boutons et les formulaires de la page affichée.

Ceci dit je ne sais pas du tout ou envoyer les mains pour corriger mes projets réels que j'ai adapté avec les exemples plus sophistiqués
de Windev pour que celà marche en phase exécutable.
Merci d'avance si tu pouvais me guider
Registered member
3,334 messages
Popularité : +93 (137 votes)
Posted on August, 10 2022 - 7:44 AM
Salut
Je pense que c'est Handle(FI_NAVIGATEUR.HTM_BROWSER))
Qui pose problème
Normalement, a l'exécution ta FI_NAVIGATEUR est elle même
Dans un autre champ fenêtre interne
Si tu mets comme nom de champ CFI_ChampFenêtreInterne
Alors il faut mettre
Handle(CFI_ChampFenêtreInterne.HTM_BROWSER))
Cependant, il faut vérifier que le champ
HTM_BROWSER est bien présent car la FI peut changer
En utilisant si ChampExiste avec le "CFI_ChampFenêtreInterne.HTM_BROWSER"
Ne pas oublier les guillemets

Une autre solution est d'utiliser la propriété
..nomcomplet
A l'exécution a l'intérieur de la fenêtre interne sur le champ
Pour connaître le bon nom a utilisé dans le handle.
Registered member
45 messages
Posted on August, 10 2022 - 11:01 AM
Bonjour
Merci infiniment pour tes pistes !
Je vais vérifier, tester tout celà et je t'informe
Registered member
45 messages
Posted on August, 11 2022 - 3:01 PM
Bonjour,
En utilisant si ChampExiste avec le "CFI_ChampFenêtreInterne.HTM_BROWSER"
Ne pas oublier les guillemets
Une autre solution est d'utiliser la propriété
..nomcomplet
A l'exécution a l'intérieur de la fenêtre interne sur le champ
Pour connaître le bon nom a utilisé dans le handle.


Résumé de mes tests en suivant tes conseils ...

// Dans l'évènement "Après chargement de la fenetre interne de CFI_SYSTEM_TAB
// J'ai récupéré le nom du handle
FenHandleEnCours = (CFI_SYSTEM_TAB..NomComplet)
// FenHandleEnCours contient :
FEN_MAIN.ONG_NAVIGATEUR.ALIAS_1.CFI_SYSTEM_TAB

// Dans l'événement Modification du volet affiché de ONG_NAVIGATEUR
// Je récupère le nom de l'onglet qui devrait participé au handle
WOngletEncours = ONG_NAVIGATEUR
// WOngletEncours contient ALIAS_2

// Pour info, valeurs en cours pour ..
FI_NAVIGATEUR.HTM_BROWSER.Plan = 1
FI_NAVIGATEUR.CFI_SYSTEM_TAB.Plan = 0

// Observation : je trouve anormal que dans FenHandleEnCours l'alias soit ALIAS_1
// alors que l'onglet en cours WOngletEnCours est ALIAS_2 ( visuellement l'onglet est bien le 2ème )

// de ce fait je tente la modification suivante :
// Au début de ma procédure de simulation de clic droit sur le champ HTML affiché
WOngletAVerifier est une chaîne
WOngletAVerifier = Milieu(FenHandleEnCours,25,7)
SI WOngletAVerifier <> WOngletEncours ALORS // ALIAS_1 est remplacé par ALIAS_2
FenHandleEnCours = Remplace(FenHandleEnCours,WOngletAVerifier,WOngletEncours)
FIN
// le nom complet du handle devient alors FenHandleEnCours = FEN_MAIN.ONG_NAVIGATEUR.ALIAS_2.CFI_SYSTEM_TAB

ResExiste = ChampExiste(FenHandleEnCours)
// ResExiste = vrai
SI ResExiste = Faux ALORS
Info(FenHandleEnCours + " est non accessible"
RETOUR
FIN
FIN
// on ouvre le menu contextuel de la page web qui contient le sous-menu "Afficher le code source de la page"
Multitâche(10)
EnvoieTouche("{BTNDROIT,5,380}",Handle(FenHandleEnCours))
EnvoieTouche(RC)
Temporisation(2s)

Voilà rien n'a changé, le résultat est correct :
- positionnement de la flêche du curseur
- ouverture immédiate du menu contextuel

et après reconstiution de la phase exécutable
- positionnement de la flêche du curseur
et le menu ne s'ouvre pas !!!
.....

J'ai bien conscience que les contenus des valeurs en cours pour ..
FI_NAVIGATEUR.HTM_BROWSER.Plan = 1
FI_NAVIGATEUR.CFI_SYSTEM_TAB.Plan = 0
signifient que on est une situation d'affichage de la fenêtre interne système et cache le browser ( commentaires trouvé dans une procédure )

et que celà est peut-etre une cause du problème mais je n'ai pas compris comment agir dessus !!
Registered member
3,334 messages
Popularité : +93 (137 votes)
Posted on August, 11 2022 - 5:31 PM
Je suis désolé de te dire qu'il manque
.HTM_BROWSER
Car c'est le champ HTML où tu fais ton clic droit
C'est le nom complet du champ HTML
Que tu dois connaître pas le nom complet de ta fenêtre interne
Registered member
45 messages
Posted on August, 12 2022 - 12:10 PM
Bonjour
Pardonne-moi je suis désolé de m'être trompé dans les exemples que je t'ai copiés mais tous mes tests ont bien été faits
avec le handle que tu veux c'est à dire FEN_MAIN.ONG_NAVIGATEUR.ALIAS_1.HTM_BROWSER

A part cette erreur de frappe toutes les autres observations sont bonnes.

Rappel
ResEx = ChampExiste("CFI_SYSTEM_TAB.HTM_BROWSER") RseEx donne faux
"FEN_MAIN.ONG_NAVIGATEUR.ALIAS_1.HTM_BROWSER" existe
"FEN_MAIN.ONG_NAVIGATEUR.ALIAS_1.CFI_SYSTEM_TAB" existe
Registered member
3,334 messages
Popularité : +93 (137 votes)
Posted on August, 12 2022 - 1:17 PM
Dans ce cas,
Je ne sais pas
Reste à demandé au support
A moins que quelqu'un d'autre sur le forum a une idée
Peut être avec la commande executejs mais ne me démande pas
Le code JavaScript correspondant
Registered member
45 messages
Posted on August, 12 2022 - 3:45 PM
Bah ! je vais m'arrêter là en te remerciant infiniment pour ta patience et tes conseils? :merci: