javascriptIsLife написав:В інтернетах знайшов що можна створити власний клас похідний від ListItem і в цьому класі якось щось самому відмальовувати. Так можна? Чи все так ніяк?
Відмалювати можна що завгодно. Але чи готові ви попіксельно відмальовувати, наприклад, комбобокс? А якщо готові, то навіщо вам той ListView, коли все можна просто намалювати на канві власноруч.
ListView -- це системний контрол для відображення списків об'єктів. Перш за все -- файлів. Ви бачите його на своєму робочому столі, в стандартних діалогах відкриття/збереження файлів, він є основою класичного windows explorer. Це і є його призначення і радикально його поведінку змінити не можна, бо це об'єкт ядра Windows, а не просто компонент Delphi. Його малює операційна система, а не код у Vcl.ComCtrls.pas
Ви можете перехопити вивід елементу на екран та домалювати там що завгодно. Але якщо ви захочете добавити на нього стандартну кнопку, то тут одразу купа проблем:
1. TListView не може бути парентом для інших контролів, тому розміщувати кнопки доведеться просто поверх списку на тому ж паренті, що і він сам. Обійти це можна за допомогою прямого звернення до WinAPI, але це мало що дасть.
2. Прокруткою всього навішеного доведеться займатись власноруч, список працює лише зі своїми елементами, а ваші кнопки, нагадую, навіть не можуть лежати на ньому.
3. Слідкувати за створенням чи видаленням таких контролів теж доведеться руками, список за вас це ніяк не зробить.
Тому дуже рекомендую TContolList. Він дозволяє накидати у якості елемента списку майже що завгодно і буде автоматично створювати, видаляти, та скролити ці елементи. Якщо працювали з FastReport чи аналогами, то дуже схоже.
І ще раз про DBGrid. Це теж компонент, що вміє відображати список рядків. Сам список може бути у автономному датасеті, без жодної бази даних, чи чогось подібного. Але на відміну від TListView, він, наприклад, автоматично відображає комбобокс (і повністю керує ним у бекграунді) для лукапного поля, чи якщо його просто попросити так зробити. Це теж варіант, тим більше розширені варіанти такого гріда вміють відображати також зображення, і майже що завгодно.