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

VB 6 et antérieur Discussion :

Fermer une form


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut Fermer une form
    Je sais que ça a l'aire bien bête mais je suis entrain de me prendre la tête avec ça : comment on ferme une form (pas la form actuelle, me) ?

    Je sais que c'est pas form.hide : ça ne libère pas la mémoire allouée, je veux pas utiliser end parce aue je trouve ça un peu bourrin et enfin unload (form) ne fonctionne pas, ça me renvoie une erreur invalid property value.

    J'ai essayé la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim F As Form
    For Each F In Forms
        Unload F
    Next
    Mais ça me ferme toutes les fenêtres, comment dire fermer la fenêtre untelle ça doit pourtant pas être si compliqué

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Tu étais pourtant si près du but.


  3. #3
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut
    Oo okay... alors unload (form) marche pas mais unload form ouais ! En plus quand t'écris unload, il t'affiche une petite infobulle avec la syntaxe et y'a des parenthèses. Merci quand même de m'avoir répondu

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Pas exactement, les 2 syntaxes marchent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Unload MaForm
     
    OU
     
    Call Unload(MaForm)
    Idem pour toutes procédures/fonctions avec arguments

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut
    Ha bon okay je note, quelle syntaxe étrange, enfin c'est le temps de me remettre dedans ! Merci à vous !

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Call va fonctionner mais ce n'est plus nécessaire de le mettre (sauf dans quelques cas particuliers, mais ne me demandez pas lesquels... ma mémoire étant ce qu'elle est) car consitéré obsolète (dans la plupart des cas, je disais ?).

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je suis assez d'accord avec toi, la syntaxe est bizarre, il y en a d'autres comme çà dans vb.
    Historiquement, il fallait passer par un call pour appeler une procèdure. Les gars de MicroSoft se sont dit, Vb : c'est pour les neuneu, on va leur simplifier la vie, alors il ont implaté l'autre syntaxe, qui, c'est vrai, est plus intuitive pour un débutant.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Mouais, c'est une question point de vue...

    J'ai appris VB en appelant les procédures par Call, ça permettait de les différencier des appels de fonctions qui devaient retourner quelque chose tandis qu'avec cette syntaxe "simplifiée", on ne sait pas d'un coup d'oeil à quoi on a affaire. On ne fait plus la différence entre procédures et fonctions, sachant en plus qu'on peut appeler une fonction sans utiliser la valeur quelle retourne. Ce genre de permissivité n'est pas compatible avec la rigueur que doit avoir un développeur à mon sens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private UnMontant As Currency
     
    UnMontant = 10.85
     
    CalculKekchose UnMontant
    CalculKekchose = procédure ou fonction ?

    Enfin, on va pas lancer un débat non plus...

  9. #9
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut
    Ha ben moi je fais toujours tous mes appels de procédures avec Call je savais pas que c'était obsolète, en même temps je trouve VB6 un peu obsolète

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Personnellement, ne pas utiliser Call allège le code, et accélère le développement.

    C'est le seul avantage de VB (coder vite) alors si on lui enlève ...

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par Phifi
    Mouais, c'est une question point de vue...

    J'ai appris VB en appelant les procédures par Call, ça permettait de les différencier des appels de fonctions qui devaient retourner quelque chose tandis qu'avec cette syntaxe "simplifiée", on ne sait pas d'un coup d'oeil à quoi on a affaire. On ne fait plus la différence entre procédures et fonctions, sachant en plus qu'on peut appeler une fonction sans utiliser la valeur quelle retourne. Ce genre de permissivité n'est pas compatible avec la rigueur que doit avoir un développeur à mon sens
    Pour ma part, je n'ai jamais employé Call , mais toutes les fonctions que j'emploi sont appelées avec une variable de retour, de cette façon je sais toujours si c'est une routine ou une fonction. A chacun sa rigeur

    Et il me semble que le Call n'a jamais été nécessaire en VB mais que c'est un héritage du C .
    A+

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    La plupart du temps, si vous ne voulez pas recevoir la valeur de retour d'une fonction mais tout de même exécuter le code qui s'y trouve, il suffit de taper la commande et ses paramètres mais sans les parenthèses. Un exemple courant, le MsgBox. Si vous mettez les parenthèses sans mettre de variable pour recevoir la valeur de retour, ça provoque une erreur. Alors qu'on l'utilise courament pour afficher un simple message (sans les parenthèses).

    Un autre truc bizarre avec VB. Les procédures qu'on appelle en passant les paramètres avec ou sans les parenthèses. Quand dans la définition de la procédures les paramètres ne sont pas explicitement déclarés ByVal ou ByRef, lors de l'appel de la procédure, si on met les parenthèses, les paramètres sont passés ByRef, et sans les parenthèses ils sont passés ByVal.

  13. #13
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je ne crois pas zaza , que l'utilisation des parentheses ou pas influe sur le type de passage de paramètre implicite. Pour moi c'est toujours du ByRef avec ou sans parenthese. En passant, c'est une des difficutés pour passer en Vb .Net qui lui est en ByVal par defaut.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    bonjour,

    Citation Envoyé par Delbeke
    Je ne crois pas zaza , que l'utilisation des parentheses ou pas influe sur le type de passage de paramètre implicite. Pour moi c'est toujours du ByRef avec ou sans parenthese. En passant, c'est une des difficutés pour passer en Vb .Net qui lui est en ByVal par defaut.
    donc, si j'ai bien compris, le code suivant ne fonctionnerra pas en VB.Net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim Test1
     
    incr test1
     
    sub incr(T1)
    T1=T1+1
    end sub
    test1 ne serra pas incrémenté ?
    A+

  15. #15
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    je crois oui.

    Par contre zaza, je suis du même avis que Delbeke mais tu me fais douter. Je vais faire l'essai

  16. #16
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Non, non! La bizarrerie existe bel et bien mais c'est l'inverse de ce que j'avais dit au départ. Ma mémoire... je vieillis!

    Petit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub procedI(i As Integer)
        i = i * 2
        MsgBox i
    End Sub
     
    Private Sub ProcedS(s As String)
        s = s & "toto"
        MsgBox s
    End Sub
     
    Private Sub cmdAvec_Click()
        Dim a As String, b As Integer, r
        a = Text1.Text
        b = Text2.Text
        ProcedS (a)
        procedI (b)
        Text1.Text = a
        Text2.Text = b
    End Sub
     
    Private Sub cmdSans_Click()
        Dim a As String, b As Integer
        a = Text1.Text
        b = Text2.Text
        ProcedS a
        procedI b
        Text1.Text = a
        Text2.Text = b
    End Sub
    Par contre, il sera impossible d'appeler une procédure (Sub) à plusieurs arguments avec les parenthèses. Ça provoque une erreur.

  17. #17
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Arghh, la tu nous a bien eu, zaza
    Quand je parlais de ave parenthèse ou sans, je parlais de la syntaxe avec un call ou sans , genre call proceds(X) ou proceds x

    Ce dont tu parles est différent et nescessite de voir la chose du coté du compilateur. Quand tu mets un argument entre parenthes, le compilateur execute ce qui est entre parenthes, le pousse sur la pile, puis fait le call à la sub. Ce qui implique donc que la valeur passée à la sub ne peut que être by val, puisque c'est le résultat d'un calcul.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  18. #18
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Merci de l'explication Delbeke. Maintenant je ne considérerai plus la chose comme une bizarrerie.

  19. #19
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Delbeke
    Arghh, la tu nous a bien eu, zaza
    Quand je parlais de ave parenthèse ou sans, je parlais de la syntaxe avec un call ou sans , genre call proceds(X) ou proceds x

    Ce dont tu parles est différent et nescessite de voir la chose du coté du compilateur. Quand tu mets un argument entre parenthes, le compilateur execute ce qui est entre parenthes, le pousse sur la pile, puis fait le call à la sub. Ce qui implique donc que la valeur passée à la sub ne peut que être by val, puisque c'est le résultat d'un calcul.


    edit : et si je fais ça :
    a = fonction(b), b est forcément byval ??

    Tu peux développer stp ?

  20. #20
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Je n'ai pas testé avec les fonctions, mais pour être absolument certain de passer des paramètres ByVal, vaut mieux le spécifier dans la définition de la fonction. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Function maFonction(ByVal monParam As String) as String

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Fermer une form au bout de 5 secondes
    Par gastoncs dans le forum VB.NET
    Réponses: 11
    Dernier message: 02/02/2007, 10h57
  2. [C# 2.0] Fermer une Form dans un événement
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/11/2006, 11h05
  3. Fermer une forme automatiquement
    Par MiJack dans le forum Delphi
    Réponses: 4
    Dernier message: 02/08/2006, 09h19
  4. [VB6] Comment fermer une form en cliquant sur un boutton ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2006, 19h05
  5. [Form close] Impossible de fermer une form
    Par valoji dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2006, 15h12

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