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 :

Partager une ressource entre composants


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut Partager une ressource entre composants
    Salut à tous.

    Je viens de créer un nouveau composant qui est en fait un bouton contenant 2 objets 'picture' ( jpg ou bitmap ), un pour l'état appuyé et un pour l'état normal.

    Tout ceci marche très bien, mais j'aimerais pouvoir partager les 2 images entre plusieurs boutons.

    Exemple :
    - J'ai une fiche contenant 20 boutons (pire des cas) contenants chacun 2 images.
    - Avec un poids de 10 ko par image ( jpg ou petit bitmap ), on gonfle l'executable de 400 ko, alors que la même image est utilisée à chaque fois.

    Questions :
    ----------

    N'y a t'il pas un moyen de stocker seulement 2 images et les réutiliser pour tous les boutons ?

    1 - Sachant que OnPaint fait référence à l'image (l'une ou l'autre suivant l'état), y aura t'il un accès disque à chaque onPaint si je stoque mes images en tant que ressource de l'appli ? ou alors, les ressources sont-elles chargées en mémoire lors du lancement ? (Il faut encore pouvoir acceder aux ressources depuis mon composant ... )

    2 - N'est-il pas possible de simplement déclarer une variable dans le parent, et de pouvoir y acceder depuis mon composant avec quelque chose de la forme : Parent.Shared_ImgPushed et Parent.Shared_ImgNormal ? (Peut-être fais-je un petit rêve ... )

    Désolé pour ces phrases un peu longues ...

    Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut
    Dans ce cas, une ImageList et dans les boutons tu stockes ImageList et l'index de l'image (enfin dans ton cas 2 index)...

    Bruno

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut
    Le problème est que mon ImageList n'est pas accéssible par mon composant, ou alors je ne sais pas comment m'y prendre.

  4. #4
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Il faudrait mettre une propriété TImageList à ton composant en published non (et une propriété Index pour savoir quelle image récupérer?

    un peu comme pour les TToolBars

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Par défaut
    Linkin : Si j'ajoute une propriété TimageList à mon contrôle ( ainsi qu'une var pour l'index ), dès l'affectation de mes 2 images à mon Timagelist :

    Mon contrôle (un bouton graphique) stockera les infos, et mes autres boutons seront obligés de stocker eux aussi les mêmes infos, car ils ne pourront pas accéder aux images de mon premier bouton !

    Le fait de rajouter une timagelist en published revient pratiquement au même que ce que j'ai fait, cad publier 2 propriétés Tpicture.
    Mais le problème ne vient pas de là.

    Je ne sais pas si j'ai été très clair sur ce coup, ça parrait toujours plus simple d'expliquer son pb que de comprendre celui des autres.

    En tout cas, merci

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut
    non, dans le cas de TImageListe et des index, tu ne stockes pas les images mais juste un pointer et 2 entiers... en taille ca fait une grosse difference.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TMonBouton = Class(TButton)
      ...
      ImgList: TImageList; // ce n'est qu'un pointer vers une imagelist de la form comme pour la TToolBar par exemple
      indexOn: interger;    // index dans la liste
      indexOff: integer;    // index dans la liste
      ...
    end;
    Bon la c'est simplifié, mais l'idée y est...

    Bruno.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/08/2006, 12h55
  2. Réponses: 7
    Dernier message: 06/04/2006, 18h17
  3. Comment partager les ressources entre 2 threads?
    Par remimichot dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 29/12/2005, 09h17
  4. [TOMCAT] Partager une dll entre 2 webapp
    Par lucho31 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 18/12/2005, 20h48
  5. Partager une version entre plusieurs DLL
    Par barthelv dans le forum MFC
    Réponses: 4
    Dernier message: 22/11/2005, 10h25

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