Hola.
Un ejemplo similar usando un
TListBox sería:
Código PHP:
#include<ShellApi>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListBox1->Style << lbOwnerDrawFixed;
}
void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
const int SPACE_IMG = 5;
TListBox *LB = dynamic_cast<TListBox*>(Control);
TRect R = Rect;
AnsiString s = LB->Items->Strings[Index];
int textHeight = LB->Canvas->TextHeight(s);
int textLeft = R.left + ImageList1->Width + SPACE_IMG;
int textTop = R.top + R.Height() / 2 - textHeight / 2;
ImageList1->Draw(LB->Canvas, R.left, R.top, Index);
LB->Canvas->TextOutA(textLeft, textTop, s);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
WORD inx = 0;
TIcon *icon = new TIcon;
icon->Handle = ExtractAssociatedIcon(HInstance,
OpenDialog1->FileName.c_str(), &inx);
ImageList1->AddIcon(icon);
ListBox1->Items->Add(OpenDialog1->FileName);
delete(icon);
}
}
Salida:
Saludos