|
| Iniciado por ecoinfo, 06,sep. 2019 22:06 - 14 respuestas |
| |
| | | |
|
| |
Miembro registrado 31 mensajes |
|
| Publicado el 06,septiembre 2019 - 22:06 |
Bonjour tout le monde
Je m’expliquer
fenêtre interne commande, fenêtre interne client, et onglet dynamique onglet1 sur la fenêtre interne commande je voudrai sélectionner le client après avoir ouvrier la fenêtre interne client sur l'onglet dynamique
autrement dit OngletOuvre en modale..
J'arrive pas à trouver de piste
Avez-vous une idée
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 06,septiembre 2019 - 23:20 |
Bonjour, Pourrait-on avoir une copie de ton interface ou une description moins succinte ?
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 06,septiembre 2019 - 23:38 |
Bonjour
ci-après des captures d'écrans


le clique sur sélectionner le client normalement pour ouvrir la fenêtre interne client dans l'onglet et sélectionner dans la table le client voulus et cliquer sur le bouton sélectionner et fermer qu'est sur la fenêtre interne client
J’espère que mon problème est claire
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 07,septiembre 2019 - 04:15 |
Une fenêtre normale (FEN_ListeClients) concernant la liste des clients est suffisante. A la limite, tout se passe dans le code de sélection du champ table (TABLE_Clients) Initialisation de FEN_ListeClient
MoiMême..ValeurRenvoyée=Faux Sélection d'une ligne :
MaFenêtre..ValeurRenvoyée=Client.PK_Client Mieux, si le champ table mémorise PK_Client (Description/Contenu)
MaFenêtre..ValeurRenvoyée=MoiMême
Le code du bouton de l'onglet devient alors :
nIDClient est entier sur 8 octets
nIDClient=Ouvre(FEN_ListeClients)
Une autre solution consisterait à sélectionner le client via une combo.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 07,septiembre 2019 - 10:04 |
Bonjour
Je vous remercie de vos réponses, mais je voudrai rester sur ce système des onglets car sur la fenêtre liste clients, il peut y avoir le bouton créer un client ouvrera un autre onglet avec OngletOuvre etc |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 07,septiembre 2019 - 11:35 |
Je commence à comprendre, enfin presque. C'est une fenêtre de gestion des clients et non des commandes. Un onglet "Commande" dédié à la recherche me posais quelques problèmes, d'autant plus que cette partie peut se faire hors onglet.
En gros, tu veux quelque choses dans ce genre.

Dans ce cas, l'onglet "Client" est un onglet statique.
Le principe est quasiment le même, il faut passer la clé primaire de Client à la fenêtre interne comme on le ferait pour une fenêtre normale. Initialisation :
Procedure FI_Client(gnNoClient est entier sur 8 octets=0) SI PAS HLitRecherche(Client,PK_Client,gnNoClient) ALORS HRAZ(Client) SI gnNoClient<>0 ALORS ToastAffiche("L'enregistrement n'a pas été trouvé"+CRLF+"Passage en mode création") FIN FIN FichierVersEcran()
Consultation (Bouton Consulter)
sLibelleOnglet est une chaîne
sLibelleOnglet="Client :%1%2"
SI HLitRecherche(Client,PK_Client,TABLE_Client) ALORS sLibelleOnglet=ChaîneConstruit(sLibelleOnglet,CRLF,Client.NDX_NomClient) SINON sLibelleOnglet="Nouveau Client" FIN OngletOuvre(ONG_Clients,sLibelleOnglet,FI_Client,Client.PK_Client)
Création :
OngletOuvre(ONG_Clients,"Nouveau client",FI_Client)
Remarque : Il est possible d'inclure une FI directement dans un champ table, sans avoir à passer par les onglets https://doc.pcsoft.fr/fr-FR/?1013200#NOTE5_FI_Detail_Ligne
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 07,septiembre 2019 - 22:03 |
Bonjour
d'abord merci de vos réponses je crois le problème n'est pas bien clarifié, ci-après une vidéo d'un exemple de ce que je voulais réaliser avec windev 24 la minute 0:27
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 09,septiembre 2019 - 10:08 |
La vidéo ne m'a rien apporté. Récapitulons : Nous avons une fenêtre (FEN_Commandes) comportant un onglet dynamique (ONG_Commande) alimenté par défaut par une fenêtre interne (FI_Commande)

On veut sélectionner le client concerné via un bouton de sélection (1) qui ouvre une fenêtre (FEN_ListeClient) comportant un champ table (TABLE_Client)

A partir de cette fenêtre, on pourra soit sélectionner le client (2), soit en créer un nouveau (3) via ONG_Commande

-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 11,septiembre 2019 - 01:18 |
Bonjour
Exactement c'est ça
la question est le code à mettre sur 1 l'ouverture de l'onglet client et le code à mettre sur 2 et redonner le focus à commande sachant que il peut y avoir plusieurs onglets ouvertes
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 11,septiembre 2019 - 10:27 |
On a récupéré une grosse partie des outils au fil des post précédents. Il ne nous reste plus qu'à gérer la gestion du focus, c'est l'histoire de quelques lignes. La récupération du client a été traitée dans mon post #4, il suffit de renvoyer le client sélectionné à la fermeture de FEN_ListeClients. On s'assurera que le champ table de la fenêtre FEN_ListeClient renvoie l'identifiant de client (Valeur mémorisée dans l'onglet contenu de la description) Initialisation de FEN_ListeClient
MoiMême..ValeurRenvoyée=Faux Sélection d'une ligne du champ table :
MaFenêtre..ValeurRenvoyée=MoiMême Code du Bouton OK :
Ferme() [/code) Code du Bouton Créer : [code] MaFenêtre..ValeurRenvoyée=0 Ferme() Code du bouton Annuler : Code du Bouton Créer :
MaFenêtre..ValeurRenvoyée=-1 Ferme()
En ce qui concerne la reprise de focus, l'astuce consiste à mémoriser l'alias de l'onglet appelant. Code d'initialisation de FI_Client (Penser à déclarer le contexte HFSQL indépendant DANS Description/Détail) : [Code] Procedure FI_Client(sOngletAppelant est chaîne,gnNoClient est entier sur 8 octets=0) SI PAS HLitRecherche(Client,PK_Client,gnNoClient) ALORS HRAZ(Client) SI gnNoClient<>0 ALORS ToastAffiche("L'enregistrement n'a pas été trouvé"+CRLF+"Passage en mode création") FIN FIN FichierVersEcran()
Code du bouton de sélection (1):
nNoClient est entier sur 8 sLibelleOnglet est une chaîne
sLibelleOnglet="Client :%1%2"
nNoClient=Ouvre(FEN_Liste_Client) SI nNoClient = -1 ALORS RETOUR SINON SI HLitRecherche(Client,PK_Client,nNoClient) ALORS FichierVersEcran() HRAZ(Facture) Facture.FK_Client=nNoClient Facture.NDX_DateFacture=DateDuJour() HAjoute(Facture) gnNoCommandeEnCours=Facture.PK_Facture TableAffiche(TABLE_Commande,taInit) sLibelleOnglet=ChaîneConstruit(sLibelleOnglet,CRLF,Client.NDX_NomClient) SINON sLibelleOnglet="Nouveau Client" FIN OngletOuvre(ONG_Commandes,sLibelleOnglet,FI_Client,ONG_Commandes,nNoClient) FIN
Il ne nous reste plus qu'à traiter la reprise de focus, tout se passe lors de la fermeture d'un volet.
SI EnumèreElément(enumFenêtreInterne)="FI_Client" ALORS ONG_Commandes=FI_Client.sOngletAppelant FIN
Normalement, tout y est
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 11,septiembre 2019 - 12:48 |
Bonjour
Vous avez utiliser Ouvre(FEN_Liste_Client) l'idée est d'avoir tous les fenêtres sur l'onglet ! avec OngletOuvre |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 11,septiembre 2019 - 16:39 |
Le principe est le même, mais ça va vite devenir une usine à gaz si plusieurs bons de commande sont ouverts simultanément. Et cela peut devenir ingérable pour l'utilisateur Il va falloir mettre en place une table des appels pour contrôler la sélection du client pour chaque bon de commande.
-- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 11,septiembre 2019 - 16:49 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 11,septiembre 2019 - 16:55 |
On peut rapidement arriver à ça :

-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 31 mensajes |
|
| Publicado el 11,septiembre 2019 - 17:02 |
Bonjour c'est exactement mon besoin, la question d'un seul onglet client et bien gérée, exemple si la fenêtre interne FEN_Liste_Client est déjà ouverte je leur donne le focus.. avec EnumèreChamp
Reste le code à mettre sur 1 l'ouverture de l'onglet client et le code à mettre sur 2 ..
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 11,septiembre 2019 - 17:48 |
C'est ce que je disais dans mon post précédent. Tu as tous les outils à ta disposition. il faut cependant penser à savoir que faire si la sélection du client est appelée plusieurs fois depuis le même volet, quelle choix prend on en compte ? Le premier, le dernier, un autre ...
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | | | |
| | |
|