Comoboboksen har en Items.LoadFromFile og tilsvarende en SaveToFile. Dem kan du bruge til at indlæse og gemme.
Konstruktionen har en svaghed idet du forventer at der på linje 1 skal åbnes en bestemt fil. Det går galt hvis listen sorteres eller at en linje fjernes. Hvis du vil være uafhængig af rækkefølgen i listen kan du bruge den Objects-liste der hænger på Items. Denne liste er beregnet til objekter, men der er ikke noget der forhindrer dig i at placere et tal på pladsen (en pointer til et objekt er en 4-byte størrelse og den kan bruges til tal også):
Så kan du gøre følgende:
ComboBox.Items.BeginUpdate;
try
ComboBox.Items.Clear;
ComboBox.AddObject('Moster Ada',TObject(1)); // = fil1.bmp
ComboBox.AddObject('Moster Henny',TObject(2)); // = fil2.bmp
ComboBox.AddObject('Moster Dora',TObject(3)); // = fil3.bmp
finally
ComboBox.Items.EndUpdate;
end;
I din OnChange kunne det så laves sådan her:
begin
if ComboBox.ItemIndex >= 0 then
case integer(ComboBox.Items.Objects[ComboBox.ItemIndex]) of // type caster tilbage igen
1: Image.Bitmap.LoadFromFile('fil1.bmp');
2: Image.Bitmap.LoadFromFile('fil2.bmp');
3: Image.Bitmap.LoadFromFile('fil3.bmp');
end;
end;
På den måde er du helt ligeglad med rækkefølgen i listen.
Den helt forkromede løsning var at koble et rigtigt objekt på hver linje i comboboksen. Dette objekt skulle så indeholde oplysninger om de enkelte billeder. Med al respekt er det nok en tand for avanceret p.t.