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?