PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Faire remonter une page par programmation
Faire remonter une page par programmation
Débuté par rastam, 21 jan. 2020 16:26 - 15 réponses
Posté le 21 janvier 2020 - 16:26
Bonjour,

J'ai une page avec plusieurs champs de saisie, en longueur.
Une 1ère série des champs saisie occupe une bonne partie de l'écran.
Une autre série se trouve hors écran, vers le bas, et sont en Invisibles.

Un bouton Suivant permet de valider la 1ère série et de rendre la 2ème série visible.

Cependant, je ne vois pas cette 2ème série, sauf, bien sûr, si je fais remonter les champs avec la souris par exemple.

Ma question : comment faire remonter la page par programmation pour accéder aux champs de saisie de la 2ème série ?

Merci par avance de vos retours

Rastam
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 22 janvier 2020 - 08:05
Bonjour deux options :

La fonction PagePosition() ou la fonction RepriseSaisie()

La première fait remonté la page sur un champ ou un indice d'une zonerépétée, l'autre force la saisie dans un champ, donc j'imagine sans avoir testé que le navigateur va se positionner sur le champs grace à celà, mais préféré pagePosition !

Pour le détails tout est dans l'aide ^^

>Merci par avance de vos retours

Bravo ! vous êtes la première personne à écrire cet phrase correctement en utilisant "par" au lieu de "de" !
Message modifié, 22 janvier 2020 - 08:07
Posté le 22 janvier 2020 - 13:48
Merci Poncherello,

mais cela n'a aucun effet, ni avec PagePosition(), ni avec RepriseSaisie()
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 22 janvier 2020 - 15:48
Est ce que vous avez précisez le nom du champ dans page position ? quand je le fais en code navigateur ca me déplace soit sur un champ, soit sur le bonne indice dans la zone répétée que je lui ai spécifié

Par contre une précision qui peut avoir son importance, si le champ est visible à l'écran, même partiellement le pageposition n'aura aucun effet, il faut vriament que le champ ne soit pas dans la partie visible du navigateur ^^.

C'est étrange PagePosition() fonctionne bien d'habitude
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 23 janvier 2020 - 08:50
Salut Rastam,

Sinon il y a plus simple:
1. Utilisation des plans, tu mets la série de tes 1er champs dans le plan 1 et la seconde partie dans le plan 2 (Le plan 0 étant utilisé pour tous les champs qui sont communs à tous les plans), ensuite tu met sur le bouton suivant MaPage..plan += 1 et MaPage..plan -= 1 dans le bouton précédent.

ATTENTION: Dans la description de la page, sous l'onglet UI, tu dois activer la gestions des plans

2. Utilisation d'un onglet dont les onglets sont invisible, ensuite idem que les plans mais avec l'onglet => ONG_MesChamps += 1, etc.

A+
Daryl

--
http://www.concept4u2.com
Posté le 24 janvier 2020 - 11:29
Bonjour,

Daryl, merci beaucoup pour ta proposition, mais les plans m'obligeraient à retoucher beaucoup de choses, et vu l'urgence...

Poncherello,

J’ai beau essayer, cela ne fonctionne pas.

Quelques précisions :
Dans la page, j’ai un champ Sélecteur CHP_Sel qui est visible et un bouton Bt_RS qui est invisible.

Dans le traitement « A chaque modification …» du champ CHP_Sel (serveur) :
...
// je fais la vérification de la saisie, et si tout est OK, alors je continue
ExécuteTraitement(Bt_RS, trtClic)



Dans le code « Clic sur Bt_RS (navigateur) » :
Trace("OK")
Int_Statut..Visible = Vrai

PagePosition(Page_Candidature,Int_Statut) ==> Ne donne rien
// RepriseSaisie(Int_Statut) ==> Ne donne rien
// L’intérupteur Int_Statut est non visible et se situe en bas, hors écran.


En fait, le code du bouton Bt_RS ne s’exécute pas ! La trace ne s’affiche même pas !

Mais si je clique directement sur le bouton Bt_RS, cela fonctionne bien :
les 2 fonctions PagePosition() et RepriseSaisie() répondent.

Je m’en remets à vos suggestions.

Rastam
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 24 janvier 2020 - 11:51
ExécuteTraitement(Bt_RS, trtClic) < oui ca fait le code serveur ca , y'a une syntaxe pour la partie navigateur, mais pourquoi ne pas appeler directement une procédure navigateur.

Le nom de page dans pageposition doit être entre "" ou laisser le vide c'est encore mieux , voilà ce que dit l'aide ^^

Si le nom de la page correspond à une chaîne vide (""), la page en cours sera manipulée. Si le nom de la page est incorrect, la fonction PagePosition n'a aucun effet.

Je vais tester de mon côté pour voir

>Sinon il y a plus simple
Ouh là des plans en web c'est pas le bon "plan" pour le coup :P, c'est le genre de truc à éviter ça, mais bon après chacun dev comme il l'entend ^^
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 24 janvier 2020 - 11:59
Bon ca ne fonctionne plus .... je passe bien dans les différents code, mais le pageposition ne fonctionne plus

Peut-être un bug dans la 25 va falloir demander au support technique !
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 24 janvier 2020 - 12:25
Bon rien à faire, j'ai testé dans tous les sens, même directement en javascript, j'ai bien mon élément mais Chrome me répond que la fonction ScrollIntoView n'existe pas ... après en cherchant plus loin, je vois que bcp disent que celà ne fonctionne plus sur chrome, je test dans Opera pas mieux.

Si on est obligé d'en revenir à des "ancres" avec des liens invisible ça va être relou.
Membre enregistré
1 143 messages
Popularité : +50 (142 votes)
Posté le 24 janvier 2020 - 12:38
Bonjour,

Avec l'Ambiance BStrap vous avez un exemple de code permettant de faire ça en utilisant du JQuery
o est un objet dynamique = allouer un "Object"
o.scrollTop = ZTR_NewCours..Y - 200
jQuery("html,body").animate(o)

NAV_HEADER..Enroulé = Vrai
Posté le 24 janvier 2020 - 13:55
Oups !

Merci Thierry,

Mais je ne sais pas du tout comment tester et appliquer ton code.
Je ne sais même pas si cela correspond de près ou loin à ma problématique.

Peut-être un peu plus d'informations ?

Merci de tout coeur
Rastam
Membre enregistré
1 143 messages
Popularité : +50 (142 votes)
Posté le 24 janvier 2020 - 21:33
Tu crée un nouveau projet sur la base de l'ambiance BStrap.
Tu crée une page sur la base du modèle
Tu regarde le code

Dans l'exemple que je donne, tu remplace ZTR_NewCours par le champ que tu veux voir.
Ce code tu le place dans le code d'un bouton par exemple.

Tu peux regarder le résultat sur mon site (en cliquant sur le menu d'en-tête : http://d-catway.com/FR/
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 27 janvier 2020 - 13:31
THIERRY TILLIER a écrit :
Bonjour,

Avec l'Ambiance BStrap vous avez un exemple de code permettant de faire ça en utilisant du JQuery
o est un objet dynamique = allouer un "Object"
o.scrollTop = ZTR_NewCours..Y - 200
jQuery("html,body").animate(o)


Jolie trouvaille bien vu !

Pour aller au bout du taf, pour Rastam !

1 - Créer dans votre projet une procédure Globale Navigateur comme ceci





2 - Dans la Procédure globale navigateur y créée une fonction "PagePosition" avec le code de thierry





3 - Dans un code navigateur dans un clic de bouton ou autres on appel ça ainsi





PagePosition apparait maintenant en Vert Signifiant que la fonction est surchargé.

PS : Si un jour vous surchargé une fonction HlitRecherche avec des petits ajout en plus, dans la fonction HlitRecherche créer on peut appeler la fonction standard de windev ainsi : WL.HlitRecherche < ceci appelera la version basique de pcsoft et non la version surchargé créée ^^

Merci à Thierry en tout cas !
Membre enregistré
1 143 messages
Popularité : +50 (142 votes)
Posté le 27 janvier 2020 - 17:52
;)
Posté le 29 janvier 2020 - 10:43
Merci Poncherello,
Merci Thierry,

Désolé de répondre si tard.

Cela fonctionne bien.
Poncherello, je n'ai pas voulu surcharger la fonction PagePosition.
A la place, j'ai juste utilisé une procédure globale navigateur pg_PP(Statut..Y).
Et ça marche nickel !

Merci encore à vous deux

Bon dev

Rastam
Membre enregistré
4 messages
Posté le 04 mars 2020 - 10:53
Top merci Poncherello:merci:

--
----------------
mail@mail.mail
Consultant Gmail, Yahoo mail et hotmail international

Des questions sur les mails : mailto:mailhelp@mail.mail