Problème de décalage sous Visual Basic 6

Fermé
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011 - 4 mars 2011 à 14:04
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 7 mars 2011 à 12:33
Bonjour,
je suis un débutant en Visual Basic 6 et j'ai un projet à faire sur la Gestion d'un Club OmniSport.
J'aurais deux questions à élucider.
Voici ma première question,
J'ai une page Menu qui regroupe tout mon projet : Adhérent, Médecin, Sport, ...
J'ai créé plusieurs pages filles pour adhérent, médecin, sport, ... quand j'ouvre pour une première fois une page fille n'importe laquelle elle se place par défaut en haut à gauche ce qui est parfait. Mais quand j'ouvre une deuxième page n'importe laquelle (ça peut être la même si je l'ai fermée entre temps) elle se décale de 1 cm vers la droite et 1,5 cm vers le bas à chaque fois. Donc imaginer que j'ouvre en tous 5 pages ce qui fait un décalage de 5 cm vers la droite et 7,5 cm vers le bas.
Je ne sais pas y remédier.
Voici la seconde,
J'ai créé un DataGrid pour avoir un aperçu rapide des adhérents (Nom, Prénom, Numéro, Rue, Mail, ...) qui sont dans le Club OmniSport.
Tout marche parfaitement, mon DataGrid se complète correctement mais le seul problème, il est très mal structuré la rue de l'adhérent n'est pas visible complètement, de même pour son adresse mail. J'ai essayé d'ajuster avec l'option DefColWidth mais ça ne fait pas grand-chose. J'aimerais que la colonne numéro soit adaptée pour sa taille, celle de la rue pour la sienne, ect ...
Est-ce possible ?
Merci d'avance.
A voir également:

18 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 mars 2011 à 17:07
Bonjour,
Première réflexion... Si tes feuilles ne sont pas décalées.. comment aller de l'une à l'autre ?
Ton Datagrid tu le rempli avec une base de donnée ?
A+
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
4 mars 2011 à 18:32
Je n'avais pas envisagé cette possibilité, mais est-ce possible quand même de limité ce décalage, car au bout 10 pages ouvertes mais pas obligatoirement en même temps il y a un décalage énorme.
J'en profite pour vous demander, comment faire pour délimiter une feuille, pour qu'elle ne puisse pas aller au delà de l'écran.
Mon datagrid est rempli par une base de donné Access qui était fournit avec le projet.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/03/2011 à 20:09
Dans le Form_Activate tu met..
Me.Move Gauche,Haut,Largeur,Hauteur.

Ça peut être aussi dans le
Form_Resize

A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
4 mars 2011 à 21:01
Merci beaucoup pour tes réponses lermite222 et de ta rapidité.
Aurais tu un conseil pour le DataGrid car je suis allé sur une aide que pour cela et c'est assez complexe pour modifier une petite part dans un DataGrid.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2011 à 08:13
Private Sub Form_Load()
    DataGrid1.Columns(1).Width = 2500
End Sub

A+
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
5 mars 2011 à 10:51
Merci pour ta réponse, mais avec l'option DefColWidth dans DataGrid, ça fessait la même chose. Mais c'est pas super précis.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2011 à 12:00
Pas précis ? tu peu adapter au pixel près !!!
C'est à toi de voir pour adapter les largeurs, une fois que c'est fait y a plus à y revenir.
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
5 mars 2011 à 12:56
Oui je suis d'accord, je me suis mal exprimée. Ce que je voulais dire c'est que toutes les colonnes prennent la même taille et c'est cela que je ne souhaite pas.
J'aimerais que les colonne Nom, Prénom soient plus petites que les colonnes rue, mail.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2011 à 13:17
Beh toi alors !!! c'est quand même pas compliquer.
Adapter l'array en fonction de ce que tu veux comme largeur.
Private Sub Form_Load()
Dim Col As Integer, Lg()
    Lg = Array(2500, 3210, 540, 415, 3698)
    For Col = 0 To 4
        DataGrid1.Columns(Col).Width = Lg(Col)
    Next Col
End Sub

A+
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
6 mars 2011 à 17:01
Excusez moi, mais je ne savais pas qu'on pouvait modifier la largeur d'un DataGrid grâce au Array en Visual Basic.
Maintenant me l'avoir dit, je le sais et je vous remercie.
Est-ce possible de renommer les colonnes d'un DataGrid ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 mars 2011 à 17:05
Si ça vient d'une BD tu ne peu pas, les titres de colonne sont les noms des colonnes de ta table.
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
6 mars 2011 à 18:29
OK d'accord.
Merci ça vient d'une BD
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 mars 2011 à 17:29
Mais j'en revient au positionnement de tes formes et vu que tu en a beaucoup tu peu te servir de ce système
Télécharge le zip.
Tu peu tester le projet mais ce n'est pas le but.
Tu copie le fichier LN_RoutinesINI.bas dans le répertoire de ton appli (c'est pas obligatoire mais plus prudent)
Ensuite tu l'ajoute à ton projet..
>> Projet >> Ajouter un module >> Existant >>
dans l'explorateur tu sélectionne le module et tu tape ENTER, il va s'ajouter à tes modules.
Dans le code de la feuille MDI au début du Form_Load tu met
Private Sub MDIForm_Load()
    Init_Nom_INI
    GetFormINI Me
    '... la suite du code éventuellement
End Sub

et dans le Unload de la feuille MDI tu met
Private Sub MDIForm_Unload(Cancel As Integer)
    PutFormINI Me
End Sub

Dans toutes tes feuilles tu ajoute juste après le Form_Load
GetFormINI Me

Et dans le Form_Unload
 PutFormINI Me


Le résultat.. tes feuilles vont toujours s'ouvrir avec les dernières dimensions et positions qu'elles avaient la dernière fois que tu les a ouvertes.
A+
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
6 mars 2011 à 18:44
Ah oui ça a l'air pratique je testerais.
J'en profite pour vous demandez quelque chose.
Pendant des tests sur mon projet pour essayer d'éliminer les problèmes que je peux avoir, j'ai constaté un problème quand je compare deux zones de texte avec des numéros.
Je m'explique,
ZTun.text = ma première zone de texte = 100
ZTdeux.text = ma deuxième zone de texte = 200
Je fais une comparaison entre ces deux là.
If ZTun.text <= ZTdeux.text then
Msgbox " La zone de texte 1 est la plus petite "
Else
Msgbox " La zone de texte 2 est la plus petite "
End if

Je teste avec 100 dans la zone de texte 1 et 200 dans la zone de texte 2, ça marche.
Par contre si je teste avec 1000 dans la zone de texte 1 et 200 dans la zone de texte 2, ça marche plus. Avec les chiffres de plus de 999 ça ne fonctionne plus.
C'est du à quoi ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 mars 2011 à 19:16
La comparaison se fait sur une variable en string, donc la première lettre est toujours "1"
Pour que ça fonctionne...
If Val(ZTun.text) <= Val(ZTdeux.text) then
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
7 mars 2011 à 00:00
Que dire,
à part un grand merci pour toutes vos réponses précises et une rapidité exemplaire.
Je suis désolé mais j'aurai encore une petite question à élucider si cela vous dérange pas.
Mon problème vient d'un rafraichissement d'un Data.
A partir d'un Data je récupère des informations sur des adhérents de ma base de donnée Access. Je créé des nouveaux adhérents ou j'en supprime.
Quand cela est fait, je souhaite que ma page soit directement mis à jour. Donc je dois rafraichir le Data. J'ai créé un bouton de commande Rafraichir sur la même page du Data (DataAdhérent.refresh). Ça marche parfaitement, je créé un nouveau adhérent, j'appuie sur le bouton de commande Rafraichir et ça marche.
Mais l'inconvénient c'est que je souhaite rafraichir ce DataAdhérent d'une autre page, donc j'ai créé un bouton de commande Rafraichir sur cette page et j'ai inséré ce code là : Fadh.DataAdhérent.refresh.
Fadh = page où le DataAdhérent se situe
DataAdhérent = le Data qui récupère les informations de la base de donnée
Mais cela ne fonctionne pas.
Auriez vous une solution ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 mars 2011 à 08:56
A première vue,
Tu rafraichi le datagrid que tu viens de modifier mais tu n'actualise pas la table dans la BD.
Donc, quand tu rafraichi sur l'autre page les données n'existe pas encore dans la BD.
Mais sans certitude, pas facile avec peu de renseignement.
0
coaut Messages postés 23 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 juillet 2011
7 mars 2011 à 12:26
D'accord comment voulez vous que j'actualise la table dans la BD.
Quelles informations supplémentaire vous auriez besoin ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 mars 2011 à 12:33
Beh comme tu fais pour sauver les modif avant de fermer.
0