Was DeddyH meinte (so hab ich das vestanden):
Delphi-Quellcode:
var
ListeVonDateinamen:TStringlist;
DatenameIndex:Integer;
i:Integer;
begin
Randomize; //EIGENTLICH SOLLTEN WIR DAS IM FORMCREATE ODER SO MACHEN(nur einmal aufrufen)
ListeVonDateinamen:=TStringList.Create; //wir erzeugen eine Stringlist (, die wir unten wieder freigeben)
try
ListeVonDateinamen.add('C:\pfad\dateiname1.bmp'); //Die Stringlist muss jedes mal befüllt werden
ListeVonDateinamen.add('C:\pfad\dateiname2.bmp'); //Oder aus einer Anderen kopiert
ListeVonDateinamen.add('C:\pfad\dateiname3.bmp'); //weil Unten Einträge gelöscht werden (damit sie nicht 2 mal vorkommen)
ListeVonDateinamen.add('C:\pfad\dateiname4.bmp'); //Übrigens: Dateinamen NIEMALS so hinschreiben, sondern am Besten einen Pfad relativ zu der .exe angeben (s.ParamStr(0))
for i:=0 to Form1.ComponentCount-1 do //hier laufen wir alle auf dem Formular platzierten Komponenten durch
begin
if Form1.Components[i] is TImage then //und wenn wir ein TImage finden, dann
begin
DateinameIndex:=Random(ListeVonDateinamen.count) //machen wir erst mal eine Zufallszahl
ImageName.Picture.LoadFromFile(ListeVonDateinamen[DatenameIndex]; //und laden das Bild mit dem Dateinamen, der in der Stringlist mit dem Index DatenameIndex liegt
ListeVonDateinamen.Delete(DateinameIndex); //dann löschen wir den Eintrag, damit wir nicht 2 mal das gleiche Bild laden
end;
end;
finally //selbst wenn oben seit den try etwas schief läuft kommen wir hier rein
FreeAndNil(ListeVonDateinamen); //und geben unsere stringlist wieder frei
end;
end;
Wichtig dürfte sein, dass die Anzahl der Elemente in der Stringlist >= der Anzahl der TImages ist (- sonst ist die SL leer)
Ausserdem kopiere nicht einfach den code (den ich übrigens mangels Delphi nicht getestet habe), sondern sieh dir an was er macht und programmiere es dann selbst, sonst lernst du dabei gar nichts (spreche aus Erfahrung)