Statt Editfeld nimmst du Combobox oder Listbox. Unter Style (bei Combobox Voreinstellung csDropDown, bei Listbox lbStandard) ändern in csOwnerDrawFixed oder lbOwnerDrawFixed und schon hast du Zugriff auf OnDrawItem und kannst du alles in das Item Zeichnen.
//Edit:
Hier ein kleines Beispiel für Listbox. Vorausgesetzt in der Listbox befinden sich Dateipfade und man hat die Funktion GetIconFromFile, werden die Pfade (obwohl immer noch vorhanden) als Dateinamen ausgegeben und die passenden Icons werden davorgestellt. Die sind hier zwar nur 16x16, man kann die Bilder aber auch größer machen.
Delphi-Quellcode:
procedure TfListBox_FileBox1.ListBox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
TopDifTxt, TopDifIco: Integer; // Gleicht die Höhendifferenz aus
FileName: String;
begin
with (Control as TListbox) do
begin
if odSelected in State then
Canvas.Font.Color := clInactiveCaptionText
else
Canvas.Font.Color := clWindowText;
FileName := ExtractFileName(Items[Index]);
TopDifTxt := (ItemHeight div 2) - (Canvas.TextHeight(Items[Index]) div 2);
TopDifIco := (ItemHeight div 2) - (16 div 2);
Canvas.TextRect(Rect, Rect.Left + 16 + 2 + 2, Rect.Top + TopDifTxt,
ExtractFileName(Items[Index]));
Canvas.Draw(Rect.Left + 2, Rect.Top + TopDifIco,
GetIconFromFile(Items[Index], True));
end;
end;
Es wird so bei dir nicht funktionieren, denn da fehlen paar Funktionen, aber das Prinzip ist erkennbar