IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

4D Discussion :

Fermer formulaire à partir d'une méthode ?


Sujet :

4D

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut Fermer formulaire à partir d'une méthode ?
    Bonjour, je suis débutant en 4D et j'aimerais à partir d'une méthode projet pouvoir fermer un formulaire. j'ai trouvé un moyen pour l'ouvrir à partir de la méthode, mais impossible de trouver comment le faire alors si quelqu'un pouvait m'expliquer ceci, çà me serait vraiment utile

    d'avance merci

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  2. #2
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Salut,

    Tu peux toujours essayer de mettre la commande 'ne pas valider'.
    Pour être un peu plus précis, peux-tu expliquer comment tu crées se formulaire, CREER FORMULAIRE, DIALOGUE, MODIFIER ENR....

    A +

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Ce formulaire a été créé avec l'assistant et le ne pas valider est utilisé pour le bouton fermer du formulaire. Mais moi si j'ai bien compris je ne dois aps pouvoir utiliser cette méthode puisqu'elle est valable pour le formulaire courant, or en l'occurence ce ne sera peut être pas le formulaire que je veux fermer qui sera le formulaire courant. En gros ma méthode qui doit fermer le formulaire est une boucle quis e conencte toutes els deux minutes à un ftp pour vérifier si il y a des fichier sou non et en gros si il y en a il y a un traitement qui est effectué et dans ce traitement il y a la fermeture du formulaire.

    Merci

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  4. #4
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Je n'ai pas été assez clair. Ce qu'il faudrait c'est connaitre comment tu fais afficher ce formulaire, ce que fais la methode d'appel. Par exemple, si tu passes par un CREER FENETRE, cette commande retourne un numéro correspondant à la réference de cette fenetre. Tu peux utiliser celui-ci pour fermer la fenetre.

    A +

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Désolé de ne pas avoir répondu correctement à ta question. En fait c'est bien un creer fenetre qui est utilisé. Donc si j'ai bien compris à la création de la fenetre, il faut que je récupère la référence de la fenetre dans une variable global et qu'ensuite dans ma méthode je fasse un fermer fenetre avec la référence de la fenetre comme parametre. J'ai déja tenté de faire comme ceci, mais la fentre ne se ferme pas pour autant, et je n'ai aucun message d'erreur



    parti qui crèe la fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $New:=Creer fenetre(0;110;Largeur ecran;Hauteur ecran;8;"")
    <>suivicolis:=$New

    code pour fermer la fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FERMER FENETRE{(<>suivicolis)}

    merci

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    FERMER FENETRE{(<>suivicolis)}

    Essaie en retirant les accolades :

    FERMER FENETRE(<>suivicolis)

  7. #7
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    Effectivement, les accolades sont de trop, il n'est pas non plus necessaier de passer par une variable locale, tu peux faire directement.
    <>SuiviColis:=creer fen...
    Dans une grande majorité, les formulaires attendes égalemnt un validation donc, un ne pas valider serait utile.

    A +

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    si j'enleve les accolades, 4D m'indique une message d'erreur et dans l'aide il est bien précisé qu'il faut les accolades. Sinon j'ai essayé avec les accolades et sans les parenthese et là j'ai le même probleme. J'ai mis les parenthese dans les accolades car dans l'aide c'était mis comme ceci, mais je n'ai pas l'impression que cela change grand chose

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    J'ai testé aussi avec le "Ne pas valider" apres le fermer fenetre mais çà ne change rienma fentre reste toujours ouverte et du cou j'ai pas de rafraichissement de la fenetre même si je relance la procédure de rechargement de celle ci; c'est pour cela que j'aimerais fermer la fenetre

    encore merci pour votre aide

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    Bonjour,

    Les accolades {}, dans la documentation, signifient que le paramètre est optionnel.
    Conventions d'écriture :
    Dans ce manuel, diverses conventions d'écriture sont employées :
    [...]
    • Dans la syntaxe des commandes, les caractères { } (accolades) indiquent des paramètres facultatifs. Par exemple, SIECLE PAR DEFAUT (siècle{; anPivot}) signifie que le paramètre anPivot peut être omis lors de l'appel de la commande.
    [...]
    Le paramètre optionnel de la commande FERMER FENETRE fait référence à une fenêtre externe, donc créée avec la commande Créer fenêtre externe.
    Et aussi "Il est inutile de passer un numéro à FERMER FENETRE lorsque vous l'utilisez pour refermer des fenêtres ouvertes à l'aide de la fonction Creer fenetre".

    FERMER FENETRE efface l'utilisation en mémoire de la référence à la fenêtre créée par Créer fenêtre.
    Sinon, la fenêtre est fermée physiquement par un NE PAS VALIDER ou un bouton avec action standard "annuler".

    Voir l'exemple de la doc de la commande FERMER FENETRE.

    A lire aussi :
    "la commande ne ferme pas les fenêtres standard." (type 8).
    "Si FERMER FENETRE est appelée alors qu'un formulaire est actif dans la fenêtre, elle n'a pas d'effet non plus. Vous devez appeler FERMER FENETRE lorsque vous avez fini d'utiliser une fenêtre ouverte avec Creer fenetre."

    --Steph4D

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par dubidon Voir le message
    si j'enleve les accolades, 4D m'indique une message d'erreur et dans l'aide il est bien précisé qu'il faut les accolades.
    Bonjour

    Si je ne fais pas erreur, dans l'aide ces accolades signifient que ce paramètre est optionnel. Ce que je suis certain à 100%, c'est qu'elles ne doivent pas être utilisées dans le code.

    Quelle est l'erreur que 4D vous indique?

    Les commandes que j'utiliserais sont également les suivantes...

    <>suivicolis:=Creer fenetre(0;110;Largeur ecran;Hauteur ecran;8;"")

    FERMER FENETRE(<>suivicolis)

    Par contre, l'erreur de 4D est peut-être causée par le fait que la variable <>suivicolis n'est pas déclarée.

    En espérant pouvoir vous aider.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Bon alors dans la réponse de steph4Dje crois que j'ai trouver la réponse, ce n'est pas une fenetre externe qui est créé et le message d'erreur que j'avais le confirme "Vous devez passer une référence de fenetre" ou un truc dans le genre.

    Comme je l'ai précisé, la fentre qui est créé se trouve dans un formulaire qui peut ne pas etre le seul a etre ouvert, voir meme pas ouvert du tout ou si il est ouvert ce n'est pas spécialement cette fenetre qui sera ouvert en dernier, donc le ne pas valider ou annuler ne peuvent pas aller et il sont déja utilisé pour les boutons internes à la fenetre.

    encore merci pour votre aide, mais alors comment puis-je faire pour la fermer ??

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

  13. #13
    Membre averti
    Homme Profil pro
    Bientôt retraité
    Inscrit en
    Juillet 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Bientôt retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 312
    Points : 385
    Points
    385
    Par défaut
    He ben zut,
    A la suite du message de Steph4D, j'ai jeté un oeil sur la commande 'FERMER FENETRE'. Depuis le temps que je l'utilise, je ne l'avais jamais vu ce truc.
    En conclusion même après des années d'utilisation, il faut toujours revenir sur la doc, il y a toujours des trucs que l'on loupe.

    Merci

    A +

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 27
    Points : 46
    Points
    46
    Par défaut NE PAS VALIDER sur appel extérieur
    Dans votre cas, je m'orienterais vers une gestion par process. Le principe est que c'est la fenêtre elle-même qui effectue un NE PAS VALIDER lorsqu'elle reçoit un signal.

    Je m'explique :

    Votre code créant la fenêtre et affichant votre dialogue serait placé dans une méthode projet dédié.
    Cette méthode serait appelée par la fonction "Nouveau process" de 4D, qui retourne le numéro du process créé. Ce numéro sera stocké pour savoir dans quel process le dialogue est affiché.

    Lorsqu'on aura besoin de fermer la fenêtre en question, il suffira d'utiliser la commande "Appeler process" en lui passant en paramètre ce numéro de process. Il suffira alors de capturer l'évènement "sur appel extérieur" dans le formulaire et d'effectuer un "ne pas valider" dans ce cas.

    Principe du code :
    méthode projet afficheMaFenetre :
    creer fenetre (...
    dialogue (...) `Point "bloquant" duquel on ne sortira que quand le dialogue sera annulé/validé
    <>numeroProcessDialogue:=0`Remet à 0 cette variable pour indiquer que la fenêtre a été fermée.
    FERMER FENETRE`Referme la fenêtre créée.

    Code devant afficher la fenêtre :
    <>numeroProcessDialogue:=nouveau process ("afficheMaFenetre"...

    Code devant fermer la fenêtre :
    si (<>numeroProcessDialogue#0) `Uniquement si la fenêtre a été créée, et qu'elle n'a pas encore été fermée.
    appeler process(<>numeroProcessDialogue)`Envoi du signal : Demande de fermer
    fin de si

    Dans la méthode formulaire du dialogue affiché :
    si (evenement formulaire=sur appel exterieur)`Réception du signal : On nous demande de fermer
    NE PAS VALIDER`On ferme
    fin de si

    Voilà pour le principe. A voir après si on utilise une autre variable interprocess qui sera testée dans l'évènement "sur appel exterieur", et qui indiquera le type de traitement à effectuer (fermer la fenêtre, mettre à jour les informations, faire demander quelque chose à l'utilisateur...)

    Il ne faudra pas oublier de cocher l'évènement "sur appel extérieur" pour le formulaire.

    [Edit : j'avais oublié le fermer fenêtre]

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 189
    Points : 87
    Points
    87
    Par défaut
    Merci a vous tous pour ces réponses, je vais regarder la méthode de mendahor qui en plus me permettra d'appréhender encore mieux 4D

    @++
    dubidon
    "Un jour j'y arriverais tout seul, si si je vous le jure "

Discussions similaires

  1. ouverture de formulaire à partir d'une requéte
    Par gaetanef dans le forum Access
    Réponses: 5
    Dernier message: 21/11/2005, 15h51
  2. Réponses: 32
    Dernier message: 22/09/2005, 10h40
  3. Réponses: 4
    Dernier message: 16/09/2005, 14h49
  4. Réponses: 6
    Dernier message: 19/11/2004, 16h52
  5. Réponses: 9
    Dernier message: 07/10/2004, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo