fcmd icon indicating copy to clipboard operation
fcmd copied to clipboard

Реализация Table

Open wilbit opened this issue 11 years ago • 4 comments

Требования:

  • скролбары;
  • заголовки колонок;
  • изменение ширины колонок пользователем;
  • селектор на строку;
  • редактирование столбца с именем;
  • виртуализация строк (фиксированная высота строки);

еще что-то?

wilbit avatar Aug 15 '14 08:08 wilbit

Псли речь про доработку ListView2, хочу добавить, что обязателен режим иконок (для режима "обычные значки" или "эскизы").

atauenis avatar Aug 15 '14 09:08 atauenis

Псли речь про доработку ListView2

Речь скорее всего про написание с нуля, ибо перед ListView2 таких задач вообще не стояло.

хочу добавить, что обязателен режим иконок (для режима "обычные значки" или "эскизы")

Это как в Explorer/Проводник? Это уже не Table, совсем получается. Для таких режимов стоит отдельные компоненты использовать, а потом уже можно декорировать это каким-либо классом, который все это будет поддерживать. Для иконок и эскизов задача виртуализации будет еще острее.

wilbit avatar Aug 15 '14 09:08 wilbit

Такие задачи перед ListView2 изначально планировались, иначе бы не стал его делать.

atauenis avatar Aug 15 '14 09:08 atauenis

Сейчас подумал про Тейбл. В целом там нет ничего сложного - двухмерный массив ListView2Item (источник данных), геомертические размеры всех элементов равны, известны также размеры поля для отображения и положения полос прокрутки. Следовательно, можно вычислить переделы диапазона вывода Итемов из этого массива. Дальше дело техники. Массив, думаю, в лоб делать не надо, лучше сделать функцию, возвращающую на основе исходных данных (в случае с filelistpanel это FS.DirectoryContent, но лучше допустить возможность использования ListView2 для других нужд) и режима вывода (таблица, иконки, эскизы и т.д.) этот самый двухмерный массив.

Информацию о местах отрисовки и телах отрисовки можно искать через свойство Surface у любого виджета.

atauenis avatar Aug 28 '14 16:08 atauenis