Lo mejor seria que crearas una función que devuelva la lista de archivos de una determinada carpeta (para poder utilizarla en otros sitios que sea necesario): function ArchivosCarpeta(Carpeta, Mascara: String; IncluirPath, IncluirOcultos: Boolean): tStringList; var DirInfo: TSearchRec; I, TiposDeArchivo: Integer; begin Result := tStringList.Create; TiposDeArchivo := faAnyfile -faSysFile -faDirectory; if not IncluirOcultos then TiposDeArchivo := TiposDeArchivo -faHidden; I := FindFirst(IncludeTrailingPathDelimiter(Carpeta) + Mascara, TiposDeArchivo, DirInfo); while I = 0 do begin if (DirInfo.Name <> '.') and (DirInfo.Name <> '..') then begin if IncluirPath then Result.Add(IncludeTrailingPathDelimiter(Carpeta) + DirInfo.Name) else Result.Add(DirInfo.Name); end; I := FindNext(DirInfo); end; FindClose(DirInfo); end; Por ejemplo, para llenar el ComboBox con todos los archivos JPG de la carpeta "C:\MiCarpeta", sin incluir la ruta (tercer parámetro) y sin incluir los archivos ocultos (cuarto parámetro): ComboBox1.Items := ArchivosCarpeta('C:\MiCarpeta', '*.jpg', False, False); Para llenar el ComboBox con todos los archivos de la carpeta "C:\OtraCarpeta", incluyendo la ruta e incluyendo los archivos ocultos: ComboBox1.Items := ArchivosCarpeta('C:\OtraCarpeta', '*.*', True, True); Nota: La función no incluye subdirectorios ni archivos de sistema.
Otra cosa más... si la función la quieres utilizar para otra cosa que no sea un ComboBox, debes crear la variable que "recoja" la lista: procedure TForm1.Button1Click(Sender: TObject); var ListaDeArchivos: tStringList; begin ListaDeArchivos := ArchivosCarpeta('C:\MiCarpeta', '*.jpg', False, False); // Aqui realizas las tareas que quieras con la lista... //...y luego la eliminas de memoria: FreeAndNil(ListaDeArchivos); end;
Gracias por vuestras respuestas y perdonad la demora en la contestación. Al final lo que hice fue crear un fichero en el que cargaba los nombres de las tablas. Al arrancar el programa me leía el fichero y me lo carga en el combobox.