Создаете свой стиль для ListBox (точнее редактируете на основе стандартного). Там можно все визуально настроить как на обычной форме. Указываете этот StyleBook форме.
Имена объектов указываете в StyleName каждого объекта.
Чтобы менять картинку просто указывая image index для ListBox Item'a (vItem.ImageIndex ) картинка TGlyph должна иметь имя 'glyphstyle'.
Далее обращаетесь к ним по StyleName именам так:
vItem.Text := vCampaign.Name;
vItem.StylesData['descript'] := fCore.Settings.LoadCampaignDescr(vCampaign.Name);
vItem.StylesData['details'] := '';
vItem.ImageIndex := 3;
В моем случае descript и details - это TText.
А вот так работать можно с любыми контролами:
vItem.NeedStyleLookup;
vItem.ApplyStyleLookup; // without this, FindStyleResource will return nil
vSwitch := vItem.FindStyleResource('switch') as TSwitch;
Assert(vSwitch <> nil);
vSwitch.IsChecked := vCampaign.Enable;
vSwitch.OnClick := DoOnClickCampaignSwitch;
ну и на всякий случай:
vItem := TListBoxItem.Create(nil);
vItem.Parent:= Listbox;
Listbox.AddObject(vItem);
vItem.StyleLookup := 'CampaignItem';