Hola vankul.
De este modo me funciona correctamente:
Código:
#include <jpeg.hpp>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
FileListBox1->Directory = "C:\\Prueba\\Imagenes";
FileListBox1->Mask = "*.BMP;*.JPG;*.JPEG";
ListView1->SmallImages = ImageList1;
ListView1->ViewStyle = vsSmallIcon;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i = 0; i < FileListBox1->Items->Count; i++) {
TJPEGImage *JPG = new TJPEGImage();
Graphics::TBitmap *BM = new Graphics::TBitmap;
TRect R;
AnsiString filename = FileListBox1->Directory + "\\" +
FileListBox1->Items->Strings[i];
AnsiString name = ExtractFileName(filename);
AnsiString ext = ExtractFileExt(filename).UpperCase();
R.Left = 0;
R.Top = 0;
R.Right = ImageList1->Width;
R.Bottom = ImageList1->Height;
BM->Width = ImageList1->Width;
BM->Height = ImageList1->Height;
try {
if (ext == ".JPG" || ext == ".JPEG") {
JPG->LoadFromFile(filename);
BM->Assign(JPG);
BM->Canvas->StretchDraw(R, BM);
ImageList1->Add(BM, NULL);
}
if (ext == ".BMP") {
BM->LoadFromFile(filename);
ImageList1->Add(BM, NULL);
}
ListView1->Items->Add();
ListView1->Items->Item[ListView1->Items->Count-1]->Caption = name;
ListView1->Items->Item[ListView1->Items->Count-1]->ImageIndex = i;
}
catch(...) {
MessageBox(Handle,
((AnsiString)("Error leyendo imágen: "+filename)).c_str(),
"ERROR",
MB_ICONERROR);
}
delete JPG;
delete BM;
}
}
Saludos
Edito: vankul, cambié el título original
"Una ayudita" por uno mas significativo para facilitar las búsquedas.