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 :

[VB6]Fermer une page de propriétés en cas d'erreur


Sujet :

VB 6 et antérieur

  1. #1
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut [VB6]Fermer une page de propriétés en cas d'erreur
    Bonjour
    Dans le cadre de la mise en place d'un OCX dans une form, j'affiche une PropertyPage.
    Une erreur peut se produire lorsque l'utilisateur saisi les propriétés demandées. J'ai bien une procédure d'erreur, avec entre autre un Exit Sub en cas d'erreur. Le problème est que la propertypage reste affichée alors que je souhaite la désactiver.
    Merci pour vos suggestions.

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    tu ne peut pas utiliser un on error goto label

    label: exit sub?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  3. #3
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    J'ai bien un gestion d'erreur dans la provédure et l'erreur est bien captée. Le problème est la fermeture de la fenêtre de dialogue, qui même après un exit sub reste affichée. Et il n'y a d'autre solution que d'appuyer sur le bouton de commanade annuler de la fenêtre.
    Malheureusement, ce bouton de commande ne semble pas accessible par code. Peut-être une API?

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    si yu à un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on erroro goto monlabbel
    tu n'a qua mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monlabel: Unload me
    exit sub
    ou sinon, je ne vois pas le problème...
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    C'est bien ce que j'ai fait depuis le début...

  6. #6
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2005
    Messages : 64
    Points : 95
    Points
    95
    Par défaut
    salut
    j'ai pas vraimment une solution mais essai SendKeys "{ESC}"
    a+

  7. #7
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par jacma
    C'est bien ce que j'ai fait depuis le début...
    et ça marche pas?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  8. #8
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Pas vraiment, non
    L'erreur est bien interceptée, le message d'erreur que j'ai défini s'affiche, l'exécution du code passe sur la ligne "Exit Sub"... mais la page de propriété reste affichée. On peut alors cliquer sur le bouton "Annuler" de la page pour la fermer. Mais je ne vois pas comment simuler ce clic...

  9. #9
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    non, mais tu à pensé à mettre un unload me avant exit sub?
    sinon, ça marche pas?
    ou bien à recopier le code du bouton anuller?

    pourrais tu nous donner un bout de code?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    peu-être nous dire de qu'el ocx il sagit ... voir si on arrive à le reproduire)

  11. #11
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Citation Envoyé par méphistopheles
    non, mais tu à pensé à mettre un unload me avant exit sub?
    Oui, j'avais essayé. Cela me renvoyait un message d'erreur "Impossible de décharger cet objet"
    sinon, ça marche pas?
    Citation Envoyé par méphistopheles
    ou bien à recopier le code du bouton anuller?
    Je l'ai vainement cherché. Lors de la création de la page de propriété, ces boutons n'existent pas. Ils sont ajoutés automatiquement lorsque l'on implante l'OCX et on en définit les propriétés.
    pourrais tu nous donner un bout de code?[/quote]Voici la procédure en cause.
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Private Sub Definir_Liaison()
    'Affiche les champs d'une des tables (suivant l'index de la commande)
    'pour définir le champ de liaison (de la table principale ou de la table liée)
     
      On Error GoTo GestErreur
     
      Dim SQL As String
      Dim strTable As String
      Dim Champ As Field
      Dim rsRelat As ADODB.Recordset
      Dim strChampRelat As String
      Dim i As Integer
      Dim strErreur As String
     
      Set rsDefChamps = New ADODB.Recordset
      Set rsRelat = New ADODB.Recordset
     
      lstTables.Visible = True
      lstChamps.Visible = True
     
      If Flag = True Then
        strTable = txtTablePere
      Else
        strTable = txtTableFils
      End If
     
      strErreur = "Liaisons"
      SQL = "SELECT * FROM [" & strTable & "]"
      rsDefChamps.Open SQL, cnBase, adOpenDynamic, adLockOptimistic, adCmdText
     
      'Recherche et sélection dans la liste des champs de liaison ----------------------------------------------------
      SQL = "SELECT * FROM MSysRelationships"
      rsRelat.Open SQL, cnBase, adOpenDynamic, adLockOptimistic, adCmdText
     
      rsRelat.MoveFirst
     
      If Flag = True Then
        strChampRelat = rsRelat.Fields("szColumn")
      Else
        strChampRelat = rsRelat.Fields("szReferencedColumn")
      End If
     
      For i = 0 To lstChamps.ListCount - 1
        If lstChamps.List(i) = strChampRelat Then
          lstChamps.Selected(i) = True
          Exit Sub
        End If
      Next i
      'Fin recherche et sélection ----------------------------------------------------------------------------------------------------
     
    '**********************************************************************************
    '******************************** Gestion d'erreurs *******************************
    '**********************************************************************************
    Exit Sub
    GestErreur:
      Select Case Err.Number
        Case 3021 'Les liaisons entre tables n'ont pas été établies dans Access
          MsgBox "La liaison entre les tables n'a pas été établie " & _
                  "dans la base de données Access." & vbCrLf & _
                  "(Etablissez la, dans Access, menu Outils/Relations)"
          Exit Sub
        Case Else
          MsgBox Err.Source & " - IGInterfaceDBADO" & " - " & strErreur & vbCrLf _
                            & Err.Number & " - " & Err.Description & vbCrLf _
                            & "Notez et signalez cette erreur."
          Resume Next
      End Select
    Exit Sub
     
    End Sub
    Citation Envoyé par bbil
    peu-être nous dire de qu'el ocx il sagit ... voir si on arrive à le reproduire)
    C'est un OCX de ma composition. Il propose la barre de navigation telle qu'elle est dans mon praticiel sur la gestion des données. Il agit en tant que source de données et il permet de définir l'accès à une base de données ACCESS, deux tables liées et leur champ de liaison. Elle se présente ainsi:

    Je peux l'envoyer en privé...

  12. #12
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    J'ai trouvé une solution. Il suffit de simuler un escape avec:Ce n'est peut-être pas très "propre", mais cela fonctionne. Je ne sais pas pourquoi je n'y est pas pensé plutôt . Comme quoi on (je) va(is) souvent chercher bien loin ce qui est évident.
    Si quelqu'un trouve l'API qui est derrière la boite de dialogue des pages de propriétés, qu'il n'hésite pas à me la communiquer.
    Merci.

  13. #13
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Citation Envoyé par Amri_Daly
    salut
    j'ai pas vraimment une solution mais essai SendKeys "{ESC}"
    a+

  14. #14
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Celle là, je l'avais loupée. C'était encore plus près. Je l'avais peut-être enregistrée inconsciemment et elle est ressortie.
    Merci Amry., et excuses moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Créer une page de propriété d'un control ActiveX
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/05/2006, 12h10
  2. Fermer une page avec plusieur cadre
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 12h29
  3. Fermer une page du PageControl
    Par Mimi Bulles dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2005, 17h58
  4. Réponses: 4
    Dernier message: 26/04/2005, 14h42
  5. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32

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