Vamos a ver:
Lo que estoy entendiendo de tu pregunta es esto:
Tienes una tabla de productos con los campos del código y nombre de la imagen entre otros.
El nombre de la imagen está formado por el código más un guión y un dígito y el problema para abrir la imagen correspondiente es que no sabes cuál es dicho dígito pero sí sabes que sólo habrá una imagen cuyo nombre comience con dicho código, esto es, no puede haber dos imagenes, por ejemplo, con nombres tales como 'cpbhu-2.jpg' y 'cpbhu-8.jpg'.
Enfatizo lo último ya que es importante para el método que te propongo.
Lo que tienes que hacer, dicho en forma descriptiva, es primero buscar un archivo cuyo nombre comience con la cadena 'cpbhu-' (siguiendo el ejemplo) y, quizá no tan necesario, termine con '.jpg'.
Como sólo habrá un archivo así, una vez encontrado tomas su nombre y lo usas para abrir la imagen.
Para encontrar el archivo puedes usar la función FindFirst. En el código que te pongo estoy suponiendo que la imagen la vas a presentar en una componente Image1:
Código:
var
SearchRec: TSearchRec;
begin
try
if FindFirst('cpbhu-?.jpg', faArchive, SearchRec) = 0 then
Image1.Picture.LoadFromFile(SearchRec.Name)
else
raise Exception.Create('No se encuentra la imagen');
finally
FindClose(SearchRec)
end;
end;
Ya sólo tienes que sustituir 'cpbhu-?.jpg' por una cadena adecuada usando lo que viene de tu edit, por ejemplo:
Format('%s-?.jpg', [Edit1.Text])
// Saludos