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

IHM Discussion :

Fixer colonnes dans une listbox


Sujet :

IHM

  1. #21
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    oui c'est sur.
    tu n'aurais pas une autre solution pour que je puisse laisser afficher 2 colonnes?
    faire une autre listbox et les synchroniser? Mais comment les synchroniser pour que quand on descend une liste l'autre suive????

  2. #22
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Synchroniser deux listes c'est pas gagné gagné d'avance.
    Il faudrait synchroniser les ascenseur verticaux et arrivé en bas de liste la position des ascenseurs n'est plus correcte et ça va faire un décalage.
    En tout ça ne facilitera pas les choses côté programmation (API à coup sûr).

    Avec un formulaire ça reste jouable, il faut programmer quand même un peu pour lier les contrôles aux champs de la requête si elle change...
    Et pis rajouter la classe clScrollForm pour figer les contrôles.
    Tu peux faire quelque chose de générique avec une fonction d'initialisation dans le sous-form qui prendrait en paramètre la requête, la taille des colonnes, la colonne liée, le contrôle du formulaire parent à mettre à jour...

    Faudrait voir le résultat pour savoir si ça vaut le coup...

  3. #23
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    en gros c'est compliqué à mettre en place. le problème c'est que j'ai vraiment besoin de figer 2 colonnes et d'apres tout ce que tu me dis ca m'a l'air bien compliqué et long. en plus je ne sais pas trop comment faire
    aieeee aieeee aieeee

  4. #24
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Je ne veux pas te décourager non plus, c'est pas si énorme que ça.
    Si la fonctionnalité est vraiment importante ça peut valoir le coup c'est à toi d'en juger.

  5. #25
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    ben en fait il me faut figer les 2 colonnes pour avoir en permanence ces informations affichées mais c'est pas vital non plus. cependant j'aimerais bien arrivé à le faire. mais je sais plus par où commencer et quoi faire !!!

    lol suis perdue !!!

  6. #26
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Voici mon code d'erreur avec ton code
    Nom : erreur.JPG
Affichages : 52
Taille : 15,4 Ko
    (Formulaire1 est le nom du formulaire ou se situe le sous formulaire ssform)
    Pourquoi ce message d'erreur???

  7. #27
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bon dès que j'ai le temps je ferai un formulaire de test pour voir...

  8. #28
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Merci c'est gentil car là suis un peu perdue

  9. #29
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Ton erreur apparemment c'est que tu ne peux pas affecter du SQL directement à la propriété SourceObject, il faut y mettre un objet (requete,table ou formulaire).

    Le formulaire c'est sûrement nécessaire pour pouvoir personnaliser le sous-form (edition non autorisée, pas de boutons de déplacement en bas, lecture de la valeur sélectionnée, ...)

    Un petit exemple en pièce jointe.

    Le formulaire SousFormListe devrait pouvoir être utilisé tel quel, en le copiant dans ton appli.
    Tu mets ensuite ce formulaire dans ton contrôle sous-formulaire, propriété SourceObject.
    Et dans le formulaire principal, "sur ouverture" par exemple tu initialises le sous-form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.CadreSousForm.Form.InitializeList "select * from tabletest", "TxtValue", 0, 1, Array(-2, 0, 1, 2)
    '
    CadreSousForm : c'est le contrôle qui contient le sous-formulaire
    Il y a dans le formulaire SousFormListe la fonction InitializeList pour initialiser tout ça, les paramètres dans l'ordre sont :
    - pSQL : Le SQL de la source de données
    - pValueInControl : le nom du contrôle du formulaire principal qui doit prendre la valeur sélectionnée dans le sous-form
    - pLinkColumn : le numéro de la colonne qui contient la valeur à renvoyer
    (la numérotation commence à zéro)
    - pFixColumns : nombre de colonnes figées
    - pColumnWidth : largeurs des colonnes
    C'est un tableau de la forme : Array(TailleColonne0, TailleColonne1, ...)
    Avec 0 pour masquer la colonne, -2 pour un dimension automatique en fonction de la taille du texte.

    (Seul pSQL est un paramètre obligatoire)

    Quelques explications :
    - J'ai mis 10 contrôles dans le formulaire, nommé TxtChampX avec X de 0 à 9.
    - Ces dix contrôles ont une étiquette attachée pour recevoir le libellé du champ (propriété légende ou à défaut le nom du champ)
    - Au chargement du sous-formulaire, les champs source des contrôles sont changés en fonction des champs de la requête; les légendes des étiquettes sont également modifiées.
    - Les formats des champs sont propagés (si il y a par exemple "Date, Complet" dans le champ de table, alors le format sera appliqué à la colonne du formulaire)
    - Le sous-formulaire s'affiche en mode feuille de données, en fait on arrive quand même à figer les colonnes en mode feuille de données
    - Pour figer les colonnes c'est embêtant la propriété est en lecture seule, donc il faut mettre le focus sur la colonne à figer puis lancer la commander FreezeColumn (c'est fait sur le premier déclenchement de l'événement "Sur Activation", on ne peut pas le faire au chargement du formulaire)
    - Lorsqu'on change d'enregistrement dans le sous-formulaire, le champ pValueInControl est mis à jour dans le formulaire principal

    Peut-être encore quelques corrections et changements à apporter en fonction de ce que tu veux faire.

    Bye.
    Fichiers attachés Fichiers attachés

  10. #30
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Merci beaucoup pour ton code je vais l'étudier et je te demanderais si j'ai des petits problèmes.

  11. #31
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    J'ai testé ton code il fonctionne mais j'ai quelques petits problèmes. Quelque soit le nombre de colonnes dans ma requête, il m'affiche toujouts que les 3 premières. (J'ai rajouter d'autres controles avec la même logique de nom) donc je comprend pas pourquoi ca ne m'affiche que les 3 premières colonnes


  12. #32
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    J'ai compris comment afficher les autres colonnes.
    Je continue à tester

  13. #33
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Ton code marche bien mais j'aimerais savoir comment remettre a vide le sous formulaire?
    J'explique : voila j'initialise mon sous formulaire en cliquant sur un bouton. et la requête est a chaque fois différente. Quand je reclique sur mon bouton et que ma requête contient moin de champs que la précédente, dans le sous formulaire il reste les colonnes en plus. et Il m'affiche #Nom? dans les cellules en trop.

    Comment faire pour éviter ca?

    et pour masquer les colonnes ca ne marche pas. le code est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' Largeur nulle --> on masque la colonne
    Me.Controls(gPrefixChamp & lCpt) = True
    ca ne me masque pas les colonnes. Pourquoi??

    dans ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' Masque les colonnes superflues ou celles dont la taille demandée est nulle
    lCtrl.ColumnHidden = (lNumCtrl >= lRS.Fields.Count) Or pColumnWidth(lNumCtrl) = 0
    apparemen le lCtrl.ColumnHidden ne marche pas car il ne me cache pas les colonnes superflu pourquoi???

  14. #34
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    C'est bon j'ai trouver j'ai remplacer le bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' Masque les colonnes superflues ou celles dont la taille demandée est nulle
    lCtrl.ColumnHidden = (lNumCtrl >= lRS.Fields.Count) Or pColumnWidth(lNumCtrl) = 0
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If lNumCtrl >= lRS.Fields.Count Or pColumnWidth(lNumCtrl) = 0 Then
        lCtrl.ColumnHidden = True
    Else
        lCtrl.ColumnHidden = False
    End If
    et ca me cache les colonnes superflues

    (je sais je fais moi même les questions et les réponses lol)

  15. #35
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    à priori la ligne devraient être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls(gPrefixChamp & lCpt).ColumnHidden = True

    désolé je t'ai peut-être attaché un fichier ancien, je devais être fatigué moi...

  16. #36
    Membre du Club Avatar de emeraudes
    Inscrit en
    Avril 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    c'est pas grave ton fichier joint m'a été d'une grande aide et j'ai réussi a résoudre ce petit problème, maintenant tout marche bien et c'est exactement ce que je cherchais a faire

    Merci bcp

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2003] Problème de décalage des colonnes dans une listbox
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 20h06
  2. Largeur de colonne dans une Listbox
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2009, 11h29
  3. Afficher plusieurs colonnes dans une ListBox
    Par codial dans le forum Bases de données
    Réponses: 11
    Dernier message: 23/01/2007, 12h48
  4. Réponses: 4
    Dernier message: 21/07/2006, 14h53
  5. Afficher deux colonnes dans une ListBox
    Par deubal dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/10/2005, 19h53

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