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

Composants VCL Delphi Discussion :

changer image en fonction de la selection d'une Listbox


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut changer image en fonction de la selection d'une Listbox
    Bonjour,
    en fait j'ai plusieur tableau, tab_image et tab_param qui me servent a stocker des timage et des strings, lors de la création d'une image j'utilise la fonction suivante :

    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
    function CreerImage(name_img : string; position_left : integer = 0): integer;
    var
       i : integer;
    begin
         try
            for i := 0 to length(tab_image)-1 do
            begin
                 if(tab_image[i].left = position_left) then
                 position_left := position_left + tab_image[i].Width;
            end;
         finally
         SetLength(tab_image,length(tab_image)+1);
         tab_image[length(tab_image)-1] := TImage.Create(Form1);
         with tab_image[length(tab_image)-1] do
              begin
                   Parent := Form1;
                   Name := 'image' + IntToStr(length(tab_image));
                   picture.LoadFromFile('C:\Documents and Settings\Administrateur\Bureau\projet\bmp\'+ name_img + '.bmp');
                   Visible := true;
                   Left := position_left;
                   AutoSize := true;
                   OnDragOver := Form1.ImageDragOver;
                   OnMouseDown := Form1.ImageMouseDown;
                   OnEndDrag := Form1.ImageEndDrag;
                   PopupMenu := Form1.PopupMenu1;
              end;
         result := length(tab_image)-1;
    end;
    end;
    Par la suite la procedure qui utilise cette fonction pour par exemple rajouter l'image d'un pc est :

    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
    procedure TForm1.PC1Click(Sender: TObject);
    var
       tmp : string;
       res : boolean;
    begin
         res := true;
         while (tmp = '') and (res) do
           begin
                res := InputQuery('Nom du pc','PC',tmp);
           end;
         if (res) then
            if CleanForm() = mrok then
             begin
                  ListBox1.Items.Add('PC ('+tmp+')');
                  SetLength(tab_param,length(tab_param)+1);
                  with form2 do tab_param[CreerImage('pc')] := CreerParam(Edit1.text, edit2.text,edit3.text,edit4.text,edit5.text,edit6.text,edit7.text,edit8.text,edit9.text,edit10.text,RadioButton7.Checked,RadioButton6.Checked,RadioButton2.Checked,RadioButton4.Checked,RadioButton1.Checked,RadioButton5.Checked,RadioButton3.Checked,RadioButton8.Checked,RadioButton10.Checked,RadioButton9.Checked,RadioButton12.Checked,RadioButton11.Checked);
                  StatusBar1.Panels.Items[0].Text := tab[8];
             end;
    end;
    lorsque je selectionne un item de la listbox1, je voudrais que l'image créé précedemment (fond blanc) se change en une autre image (fond jaune) et qu'elle fasse l'opération inverse lorsque je la déselectionne.

    Pour les photos a fond jaune la syntaxe est de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    picture.LoadFromFile('C:\Documents and Settings\Administrateur\Bureau\projet\bmp\'+ name_img + '_selected.bmp');
    mais je ne sais pas dans quel évènement placer ça et la manière dont formuler le code :s, des idées?

  2. #2
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    Je pense qu'il faut aller chercher l'image qui correspond a la ligne de tab_param qu'on a selectionné dans la listbox, mais bon :s

    Personne?

  3. #3
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    ben moi je passerai par le OnClick de ta listbox, avec une variable pour stoquer le dernier index cliqué, et une autre pour l'index cliqué actuellement

  4. #4
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    vec une variable pour stoquer le dernier index cliqué, et une autre pour l'index cliqué actuellement
    pourquoi??

    en cliquant juste sur la listbox il voit qu'il y a écrit pc, routeur, etc...mais il ne sait pas a quel élément ce nom réfère, il faut regarder ça dans le tableau, comme les lignes ds tab_image et dans la listbox sont créés en meme temps!

    le probleme si je boss sur le onclick, c'est que si apres je clic sur la form et non sur la listbox pour déselectionner l'item choisi bah l'image restera avec un fond jaune ! enfin d'apres moi ...

  5. #5
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    tu peux faire une procedure style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure doSelection(index : Integer);
    begin
      if index = OldIndex then // si rien à faire on s'en va
        Exit;
      // charge l'image OldIndex avec  un fond blanc
      // charge l'image Index avec le fond jaune
      OldIndex := index;
    end;
    et tu appelle cette routine depuis le OnClick de ta ListBox, mais aussi dans le OnClick de ta Form

  6. #6
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    oui mais de cette façon lorsque je créé une image je dois tout de suite charger l'image avec le fond jaune, ça bouffe de la mémoire, et comme il faut optimiser son code un minimum c'est pas bon :s

  7. #7
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    up !! j'en ai vraiment besoin -__- ya pas un surdoué delphien dans les parage?? lol c'est un petit chalenge a prendre !!

  8. #8
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    tu ne peux pas modifier ta procédure de chargement pour lui donner en paramètre la couleur de fond à charger, comme ça tu le fais directement au chargement ?

  9. #9
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    tu peux pas changer la couleur d'un jpg que tu charge -__-# ou bien?? a la limite si je prend une image a fond transparent mais sinon !

  10. #10
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    au lieu de charger l'image en fond blanc, puis de remplace par celle à fond jaune, tu charges directement celle avec le fond jaune

  11. #11
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    huhu le principe de la procédure est, je le rappel, que lorsque je selectionne une ligne d'une listebox, l'élément désigné par cette ligne change pour avoir un fond jaune, ça me sert donc a rien de la chargé jaune des le début

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/01/2016, 16h21
  2. [XL-2007] Selection d'une image en fonction de la valeur d'une cellule en macro
    Par chevalrv dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2012, 11h21
  3. Changer Image en fonction de date systeme
    Par fabiprotour dans le forum VB.NET
    Réponses: 11
    Dernier message: 02/09/2009, 15h27
  4. Réponses: 7
    Dernier message: 03/03/2006, 16h51
  5. Réponses: 4
    Dernier message: 19/10/2005, 21h34

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