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] Tous mes controles ont bougés !


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut [VB6] Tous mes controles ont bougés !
    Bonjour, developpeur, developpeuse,

    Voila, je me suis fait une petite interface avec :

    - Un nombre de ligne et de colonne pour faire un tableau

    - Et dans chaque cellule de mon tableau, j'ai mis un bouton de commande.

    j'ai donc fait un tableau en double entrée : 13*7

    et j'ai 91 boutons de commandes dans mon tableau.

    J'ai sauvegarder mon projet et lorsque j'ai relancé mon projet :

    - mon formulaire "form" m'a déplacé mes lignes et mes boutons de mon tableau !!!!

    Je voulais savoir si cela a un rapport avec les propriétés de "form1" comme:

    - les échelles : "scalemode", "scaletop", "scaleleft", ... ???
    - ou bien
    - les emplacements : "StartUpPosition", "Moveable", "Left", "height", ... ???

    Merci beaucoup beaucoup

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    S'ils ont "valsé" tous ensemble (en restant donc dans le bon ordre), la propriété ScaleMode de ta Foirm est concernée

    S'ils se sont "désorganisés", c'est autre chose et les causes peuvent être multiples (manuelles ou dynamiques)
    Si tu es en VB6 et que tu as fait ce "tableau" visuel avec des lignes verticales et horizontales, tu t'y es vraiment mal pris.... on ne fait pas çà !

  3. #3
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    les propriétés d'echelle, c'est fort possible (ScaleMode)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut ha ok mais...
    Ok pour le "scalemode", je l'ai mis en "User" et j'espere que ca ne bougera plus

    merci

    Par contre, pkoi je me suis mal pris????

    Peux tu me donner une piste pour faire des tableaux autrement ???

    merci

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Peux tu me donner une piste pour faire des tableaux autrement ???
    je veux bien car tous ces contrôles line sont un peu insensés !...

    Alors : quand tu "disposes" les contrôles d'affichage, tu les disposes de façon régulière : toujours le même espacement horizontal et le même écartement vertical.
    En procédant de cette façon, tu connais les ordonnées des lignes horizontales (à mi chemin entre le bas du contrôle juste au dessus et le haut du contrôle juste au dessous). Tu connais également les abcisses des lignes verticales (à mi chemin entre le côté droit du contrôle juste avant et le côté gauche du contrôle juste après).
    Si tes contrôles d'affichage sont en plus de même largeur et répartis régulièrement, tu peux encore faire mieux car les abcisses des lignes suivantes seront toujours écartées d'une distance égale à la différence entre la position gauche d'un contrpôle et la position gauche du contrôle suivant. Même raisonnement en ce qui concerne les lignes horizontale... les ordonnées, donc.
    Il ne te reste plus qu'à faire une simple boucle et d'utiliser la fonction Line pour dessiner dynamiquement tes lignes verticales et horizontales.
    De cette façon, tu évites d'encombrer indûment ton application par tout un tas de contrôles Line.
    Voilà tout.

  6. #6
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par jmfmarques
    je veux bien car tous ces contrôles line sont un peu insensés !...
    J'ai raté qque chose ?!? (si oui, je dois pas être le seul )

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    J'ai raté qque chose ?!? (si oui, je dois pas être le seul )
    Oui !
    Il a fait un "tableau" consititué de contrôles Line horizontaux et verticaux (j'en compte visuellement au moins 90... je les "vois" bien... et ils se sont "déplacés"....)
    Mes lignes ne sont pas des contrôles inclus dans son projet mais des dessins dessinés à l'éxécution et qui, une fois dessinés, n'encombrent absolument pas la mémoire. C'est très différent.

    Regarde :
    mon formulaire "form" m'a déplacé mes lignes et mes boutons de mon tableau !!!!

  8. #8
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Au lieu de mettre des lignes pourquoi pas mettre l'apparence des textbox en Flat (à la place de 3D)?? Cela évite les lignes non?

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Allez, Fabiofabio... je dois aller au resto...

    Voilà de quoi te faire comprendre mieux :

    Sur une form, une picturebox vide appelée picture1 , un bouton de commande appelé command1 et ce code
    lance, vois et comprends
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
      For i = 0 To Picture1.Width Step Int(Picture1.Width / 10)
       Picture1.Line (i, 0)-(i, Picture1.Height)
      Next
      For i = 0 To Picture1.Height Step Int(Picture1.Height / 10)
       Picture1.Line (0, i)-(Picture1.Width, i)
      Next
     
    End Sub

  10. #10
    Membre expérimenté Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Par défaut
    Mais le désavantage de cette méthode est que dès que la form passe au second plan et qu'une autre fenetre est devant, les lignes disparaissent, ce qui est parfois gênant (enfin c'est probablement gérable avec certains évenements mais je suis pas certain qu'on garde l'avantage de la légèreté dans ce ca), non ?

    Pour revenir a la question d'origine, c'est pas la meilleure solution de placer tes lignes dans l'interface objet : comme le fait remarquer jmfmarques, tu peux placer ces controles avec une boucle dans un code. Pense également que si ton application tourne en plein écran et que l'utilisateur a une autre résolution d'écran que la tienne, le résultat risque d'en prendre un coup.

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bonjour Mandalar,

    Tu vas apprendre des choses, ce matin....

    Pour ce qui est de la disparition des lignes quand la Form revient d'un second plan : Regarde les propriétés d'une PictureBox. Il t en a une, parmi elles, qui s'appelle AutoRedraw... tu la vois ?... Bien : dans l'exemple qie j'ai donné plus haut, mets à True la propriété AutoRedraw de Picture1 et vois... (il n'en faut pas plus !)

    Pour ce qui est de la résolution d'écran différente : rien ne se passerait de plus (toutes les proportions seraient gardées) qu'avec n'importe quelle autre application : l'affichage de la form occuperait plus ou moins d'espace à l'écran, c'est tout, tout le reste étant "distribué" proportionnelement à sa distribution originelle, donc convenablement.

  12. #12
    Membre expérimenté Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Par défaut
    Citation Envoyé par jmfmarques
    Regarde les propriétés d'une PictureBox. Il t en a une, parmi elles, qui s'appelle AutoRedraw... tu la vois ?... Bien : dans l'exemple qie j'ai donné plus haut, mets à True la propriété AutoRedraw de Picture1 et vois... (il n'en faut pas plus !)
    Ah oui! et moi qui n'utilisais pas cette technique pour cette raison, il va falloir que je m'y mette

    Citation Envoyé par jmfmarques
    l'affichage de la form occuperait plus ou moins d'espace à l'écran, c'est tout, tout le reste étant "distribué" proportionnelement à sa distribution originelle, donc convenablement
    En fait ma remarque n'était valable que si la propriété WindowState de la form est a Maximum, mais dans les autres cas ca ne pose pas de probleme.

    Citation Envoyé par jmfmarques
    Tu vas apprendre des choses, ce matin....
    A partir de ce matin je serai (un tout petit peu) moins incompétent , merci jmfmarques

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Tu n'as pas à rougir de ton intervention, Mandalar !
    Nul (y compris les plus forts) ne peut prétendre tout savoir et ç'est à celà que sert ce forum.
    Grâce à ton intervention et à ma réponse, sois certain de ce que d'autres auront ainsi, comme toi, eu l'occasion de découvrir une chose qui leur avait peut-être échappé.

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    A mon retour, dans environ 2 heures, je vous concocterai du beaucoup mieux, avec insertion des zones d'affichage...
    Le tout paramétrable et centré à l'intérieur des cases du tableaux.
    Nous ferons donc ensemble un peu de gymnastique artithmétique...
    A +

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon voilà (je suis revenu plus vite que prévu et ai travaillé plus vite que prévu) :

    Alors :

    Un projet composé d'une Form
    Dans cette Form : une pictureBox nommé Picture1
    Dans la PictureBox : un groupe de contrôles TextBox indexés nommés Text1(0) à Text1(n), ou n est le nombre te textboxes qu'on veut afficher dans le "tableau"
    Ne vous préoccupez ni des dimensions ni de l'emplacement dans Picture1 de ces textboxes (ignorez totalement cet aspect).
    Puis le code suivant, dans lequel vous définissez la valeur de vos paramètres (lisez les commentaires et appliquez avec soin)
    puis lancez et voyez...
    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
    Option Explicit
    Private Sub Form_Activate()
      Picture1.AutoRedraw = True
      Dim nbcol As Integer, nblignes As Integer, coefx As Single, coefy As Single
      Dim haut As Integer, larg As Integer, corrx As Integer, corry As Integer
      '==========================================================================================
      'C'est ici que vous définissez votre tableau et son affichage
      'IMPORTANT : nbcol * nblignes DOIT BIEN EVIDEMMENT ETRE SUPERIEUR AU NOMBRE DE CASES D'AFFICHAGE
      nbcol = 7 ' on inscrit ici le nombre de colonnes
      nblignes = 5 'on inscrit ici le nombre de lignes
      coefx = 0.5 ' on choit ici un coefficient d'occupation de la largeur d'une case
      coefy = 0.6 ' on choit ici un coefficient d'occupation de la hauteur d'une case
      '===========================================================================================
      haut = Int(Picture1.Height / nblignes) * coefy
      larg = Int(Picture1.Width / nbcol) * coefx
      corrx = (Int(Picture1.Width / nbcol) - larg) / 2
      corry = (Int(Picture1.Height / nblignes) - haut) / 2
      Dim nb As Integer, i As Integer, j As Integer
      nb = 0
      For i = 0 To Picture1.Width Step Int(Picture1.Width / nbcol)
        Picture1.Line (i, 0)-(i, Picture1.Height)
        On Error Resume Next
        For j = 0 To nbcol
          Text1(nb + (j * nbcol)).Move i + corrx, Text1(nb + (j * nbcol)).Top, larg, haut * coefy
          '=================================================================================
          'la ligne qui suit n'est là que pour permettre d'étiquetter et voir la répartition
          Text1(nb + (j * nbcol)).Text = nb + (j * nbcol)
          '================================================================================
        Next j
        nb = nb + 1
        If nb >= nbcol Then Exit For
      Next
      nb = 0
      For i = 0 To Picture1.Height Step Int(Picture1.Height / nblignes)
       Picture1.Line (0, i)-(Picture1.Width, i)
       On Error Resume Next
       For j = 0 To nbcol
          Text1(nb * nbcol + j).Top = i + corry
        Next j
        nb = nb + 1
        If nb >= nblignes Then Exit For
      Next
    End Sub
    Ce n'est que de l'arithmétique, pas plus....

    J'ai voulu travailler avec des textboxes créées "en dur" pour que l'on y voie plus facilement clair. Il est clair que l'on peut bien évidemment travailler autrement (création dynamique)...(je me demande si je ne vais pas proposer un "Source" à ce propos...Qu'en pense mon parrain ?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut holala !!
    aie aie aie, je reviens du week-end et je vois toutes ces réponses et bien toutes mes félicitations mes gens et merci infiniment.

    Bon, je vais étudier tout ca et je vous mets au courant... encore merci

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut et bien c'est tout bon
    et bien c'est tout bon...

    Merci a tout le monde... ok c'est parti !

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

Discussions similaires

  1. Tous mes mails ont disparus !
    Par Myrrdin dans le forum Internet
    Réponses: 1
    Dernier message: 16/04/2013, 12h04
  2. Tous mes programmes ont disparus
    Par uploadman18 dans le forum Windows 7
    Réponses: 1
    Dernier message: 10/11/2009, 01h56
  3. Réponses: 2
    Dernier message: 07/01/2007, 18h40
  4. Tous mes OID ont changés...
    Par lesyo dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/04/2005, 18h44
  5. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 18h03

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