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

Delphi Discussion :

TListBox : Empêcher le listbox de se réinitialiser à l'index 0


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut TListBox : Empêcher le listbox de se réinitialiser à l'index 0
    Bonjour,

    J'utilse un composant qui s'appelle TadvToolSelector de TMS Software.

    Le problème est que dès que je change l'index de ce composant, il me modifie l'index d'un TLIstBox qui pourtant ne devrait avoir aucun lien.

    C'est peut être un bogue du composant, je vais essayer de poser la question sur leur forum, mais c'est en anglais .

    En attendant, existe-t'il une méthode pour empêcher le TlistBox de se réinitialiser sur l'itemindex 0.
    Eventuellement mettre une méthode du TlistBox dans l'évenement changeselect du TadvToolSelector.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 083
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 083
    Par défaut
    Etant aussi client de TMS, j'ai remarqué qu'ils ont des comportements ultra intrusif que ce soit pour les combo, et les grilles DB, ... c'est assez effrayant ... à mon avis, c'est qu'il utilise un evenement commun et qu'il est soumis à la form au lieu d'être soumis au composant lui même, j'ai remarqué qu'il y avait cette grossière erreur de transmettre le message au control.parent au lieu du control, ... essaye de mettre plusieurs TadvToolSelector sur une forme (fait toi un programme de test rien que pour cela) et constate tout ce que tu peux ...

    pour le TListBox, dure ... dans le OnChange peut-être
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut
    Merci pour ton aide.
    J'ai suivi ta piste et effectué un test avec la démo de ce composant.
    J'ai placé un TLIstBox sur la form, et là bonheur, le listbox ne change pas d'index.
    Maintenant il faut que je trouve pourquoi j'ai ce problème dans mon projet.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut
    Bon, après pas mal de test, il s'avère que le listbox se réinitialise sur l'index 0 seulement si les items du listbox ont été remplit dynamiquement, ce qui est le cas pour mon projet. Lorsque les items sont remplit en dur dans l'IDE de delphi pas de soucis.
    Je crois que je vais m'orienter sur un autre composant pour résoudre mon soucis.

  5. #5
    rbh
    rbh est déconnecté
    Membre chevronné Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Par défaut
    Salut
    N'abandonne pas si facilement.
    Moi aussi client TMS, j'ai appris à persévérer. Il faut parfois rentrer dans leur code (si tu n'as pas la version gratuite) pour trouver ce qui se passe. J'ai parfois découvert des fonctionnalité et même parfois des erreurs de développement de la part d'une personne "impardonnable" : MOI.
    Es tu sûr de ne pas reconstruire ta liste à chaque fois?
    Si non tu peux toujours isoler l'action qui provoque la ré initialisation et annuler les modifications du composant.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut
    Citation Envoyé par rbh
    Es tu sûr de ne pas reconstruire ta liste à chaque fois?
    J'ai vérifié, la liste n'est pas recréée à chaque fois.

    Citation Envoyé par rbh
    Si non tu peux toujours isoler l'action qui provoque la ré initialisation et annuler les modifications du composant.
    Tu veux dire se replacer sur l'item après la réinitialisation de l'index du TListBox, je pense. Si c'est çà j'y ai pensé, mais à chaque sélection dans ce listbox un dessin est créé dynamiquement avec plusieurd TImage sur un panel et là je pense que l'utilisateur verra le changement. (à tester quend même)

    Citation Envoyé par rbh
    Il faut parfois rentrer dans leur code (si tu n'as pas la version gratuite) pour trouver ce qui se passe
    J'ai regardé le code du composant, mais c'est un peu trop complexe pour moi.

    Citation Envoyé par rbh
    N'abandonne pas si facilement.
    Merci pour cet encouragement

  7. #7
    rbh
    rbh est déconnecté
    Membre chevronné Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Par défaut
    Citation Envoyé par Leesox
    Tu veux dire se replacer sur l'item après la réinitialisation de l'index du TListBox, je pense. Si c'est çà j'y ai pensé, mais à chaque sélection dans ce listbox un dessin est créé dynamiquement avec plusieurd TImage sur un panel et là je pense que l'utilisateur verra le changement. (à tester quend même)
    Tu peux aussi valoriser une variable booléenne à true juste avant et à False juste après et ne pas faire les actions dans ta procédure OnChange (ou autre) de ta ListBox si elle est true.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut
    Merci pour cette idée, je n'y avais pas pensé. C'est tellement simple en plus.
    La valeur booléenne à true si c'est un click dans le listbox ou à l'initialisation de la form qui accepte la création du dessin.
    Lors d'un click sur le listbox, le dessin sera créé sur le panel.
    Lors d'un click sur le AdvToolSelector, la valeur boolenne sera à false pour empêcher la création d'un dessin et pour se replacé sur le bon item du listbox.

    çà fait un peu bricolage, mais çà résoud mon soucis.
    Merci

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Par défaut
    Petite précision.
    Il me semblait avoir mis un point d'arrêt dans toutes les procédures de ma form pour vérifier si le compo AdvToolSelector fesait appel à un évenement, mais j'ai dû mal effectuer mes tests la première fois.

    En fait ce compo fait bien appel à l'Activate de la form à chaque click dessus. Pas bien !

    Voilà pour résoudre mon problème, j'utilise donc une valeur booléenne qui interdit tout retour à l'activate de la form.

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

Discussions similaires

  1. [XL-2007] Comment empêcher les listbox de se vider à l'ouverture du fichier
    Par belsuncette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/08/2013, 13h45
  2. Problème pour "réinitialiser" une listbox
    Par akapsy dans le forum VB.NET
    Réponses: 7
    Dernier message: 17/04/2012, 23h06
  3. Empêcher réinitialisation de variable
    Par frankthechamp dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 09/11/2010, 13h32
  4. ListBox - réinitialiser
    Par biquet52 dans le forum VBA Access
    Réponses: 6
    Dernier message: 16/09/2010, 09h32
  5. Réponses: 22
    Dernier message: 19/01/2006, 12h24

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