Тема: Як додати компоненти в ListView?
Такі як кнопки, випадаючі списки та все інше.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Як додати компоненти в ListView?
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Такі як кнопки, випадаючі списки та все інше.
Ніяк. TListView -- це обгортка над системним контролом, що має конкретний функціонал. Можна використати TClientDataSet в автономному режимі та TDBGrid. Грід в залежності від типу полів може містити комбобокси, чекбокси, та кнопки.
Ще недавно додався новий компонент TControlList, що може містити звичайні компоненти і автоматично керувати їхнім життєвим циклом.
Хіба гріди не для роботи з базами даних?
Там же саме ім'я говорить за себе.
DB - DataBase
Навряд TDBGrid для обробки запитів випадаючого списку.
І тим більш TClientDataSet.
P. S.
Підв'язуйте з хибними курсами. Йдіть навчатися в універ...
Ніяк. TListView -- це обгортка над системним контролом, що має конкретний функціонал
Що ні як? Що мали на увазі?
Колинебуть писали свій Т - компонент?
В інтернетах знайшов що можна створити власний клас похідний від ListItem і в цьому класі якось щось самому відмальовувати. Так можна? Чи все так ніяк?
Підв'язуйте з хибними курсами. Йдіть навчатися в універ...
Це ви йдіть, будь ласка. Але не в універ.
В інтернетах знайшов що можна створити власний клас похідний від ListItem і в цьому класі якось щось самому відмальовувати. Так можна? Чи все так ніяк?
Відмалювати можна що завгодно. Але чи готові ви попіксельно відмальовувати, наприклад, комбобокс? А якщо готові, то навіщо вам той ListView, коли все можна просто намалювати на канві власноруч.
ListView -- це системний контрол для відображення списків об'єктів. Перш за все -- файлів. Ви бачите його на своєму робочому столі, в стандартних діалогах відкриття/збереження файлів, він є основою класичного windows explorer. Це і є його призначення і радикально його поведінку змінити не можна, бо це об'єкт ядра Windows, а не просто компонент Delphi. Його малює операційна система, а не код у Vcl.ComCtrls.pas
Ви можете перехопити вивід елементу на екран та домалювати там що завгодно. Але якщо ви захочете добавити на нього стандартну кнопку, то тут одразу купа проблем:
1. TListView не може бути парентом для інших контролів, тому розміщувати кнопки доведеться просто поверх списку на тому ж паренті, що і він сам. Обійти це можна за допомогою прямого звернення до WinAPI, але це мало що дасть.
2. Прокруткою всього навішеного доведеться займатись власноруч, список працює лише зі своїми елементами, а ваші кнопки, нагадую, навіть не можуть лежати на ньому.
3. Слідкувати за створенням чи видаленням таких контролів теж доведеться руками, список за вас це ніяк не зробить.
Тому дуже рекомендую TContolList. Він дозволяє накидати у якості елемента списку майже що завгодно і буде автоматично створювати, видаляти, та скролити ці елементи. Якщо працювали з FastReport чи аналогами, то дуже схоже.
І ще раз про DBGrid. Це теж компонент, що вміє відображати список рядків. Сам список може бути у автономному датасеті, без жодної бази даних, чи чогось подібного. Але на відміну від TListView, він, наприклад, автоматично відображає комбобокс (і повністю керує ним у бекграунді) для лукапного поля, чи якщо його просто попросити так зробити. Це теж варіант, тим більше розширені варіанти такого гріда вміють відображати також зображення, і майже що завгодно.
Ще недавно додався новий компонент TControlList, що може містити звичайні компоненти і автоматично керувати їхнім життєвим циклом.
В старіших версіях делфі є подібний компонент, який називається TDBCtrlGrid. Але на відміну від TControlList він має проблеми з швидкістю роботи на великих списках, тому більше ста елементів у нього пхати не варто. Ну і, як можна здогадатися з назви, йому також потрібне зовнішнє сховище даних. Це може бути TClientDataSet або TFDMemTable в автономному режимі.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися