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:
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:
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:
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?