Witam.
Mam w bazie danych listę plików, które chciałbym wyświetlić w odpowiedniej ilości TImage. Nie wiem ile tych obrazków będzie. Dla jednego pacjenta może być ich 3, a dla innego 7. Stworzyłem sobie taką procedurę:
procedure TForm1.ZaladujZdjecia(Sender: TObject);
var iloscZdjec, i : Integer;
zdjecia : array of TImage;
jpg : TJPEGImage;
begin
DataModule2.ADODataSet3.Active := False;
DataModule2.ADODataSet3.CommandText := 'select zdjecieID, plik from zdjecia where pacjentID = ' + IntToStr(pacjentID) + ';';
DataModule2.ADODataSet3.Active := True;
iloscZdjec := DataModule2.ADODataSet3.RecordCount;
SetLength(zdjecia, iloscZdjec);
for i := 1 to iloscZdjec do
begin
zdjecia[i] := TImage.Create(Form1);
zdjecia[i].Parent := TabSheet3;
zdjecia[i].Width := 160;
zdjecia[i].Height := 100;
zdjecia[i].Left := 3 + (160 * (i - 1));
zdjecia[i].Top := 35;
zdjecia[i].Name := 'zdjecie' + IntToStr(i);
jpg := TJPEGImage.Create;
jpg.LoadFromFile(DataModule2.ADODataSet3.FieldByName('plik').AsString);
zdjecia[i].Picture.Assign(jpg);
end;
end;
Niestety procedura się wykłada w linijce
zdjecia[i].Name := 'zdjecie' + IntToStr(i);
Czemu? I czy ta procedura jest w miarę poprawna??