Создание графической библиотеки с нуля - страница 10

 
Aliaksandr Hryshyn:

В моём случае "джунгли" делаются не сложнее чем средне: окно отображения(видимая область таблицы), полноразмерное окно, в которое должны помещаться все ячейки, оно будет сдвигаться внутри основного окна, окна для строк и в них ячейки, плюс прокрутки(ползунок,ограниченный полосой). Ограничения по относительному расположению определяется свойствами. Только для ползунка надо перехватывать события перемещения объекта и уже корректировать позицию  "полноразмерного окна". Это всё делается виртуальными окнами, к нему надо прикрутить визуальную часть, без визуальной части будут окна для строк и полноразмерное окно. Ну и для редактируемой ячейки сделать поле ввода(это уже самому), всё остальное взаимодействие реализуется движком: будут поступать правильные события для каждой ячейки(события мыши, перерисовка, перемещения).... Такие возможности, есть ещё пару идей для увеличения быстродействия в случае когда окон очень много(большие списки,таблицы, несколько тысяч окон).

Вот вы сделайте.... и поговорим. :))) 

Если заметили, эта ветка отпочковалась от моей темы краудсорсового gui, где я демонстрировал язык разметки и виз.редактор. Некоторые форумчане посчитали, что смогут повторить все лучше и красивее в своей библиотеке. Через 4 страницы тема стихла. Воз и ныне там. И вот вы, как они, говорите о "тысяче окон"... короче, сделайте наконец.)))))

Удачи.))))
 
Немного опишу таблицы:

1. Ячейка - простейший элемент таблицы, состоит из трех обьектов: прям.метка, текст, иконка. 

2. Ячейки бывают нескольких типов: заголовки колонок, рядов, и те, что внутри. Их важно разделять, т.к. заголовочные несут в себе инфу о рядах/колонках (по сути их свойства). Так удобнее работать с таблицей.

3. Каждая обыкновенная ячейка имеет параметр, значение которого выводит, но есть просто текстовые ячейки, без параметра. Это другой тип. 

3. Свойства ячеек должны настраиватся выборочно: как для всего ряда, для колонки, или для всей таблицы.

4. Свойства заголовочных ячеек должны настраиваться отдельно. 

5. Таблица должна "уметь" адаптировать в себе другие элементы, как например: чекбоксы, вып.списки, ... даже слайдеры, прогресс-бары и радио-кнопки.

6. Работа таблицы должна быть оптимизирована т.о. чтобы перерисовывались только ячейки с изменившимся значение, а не все что есть.

7. Таблица должна прокручиватся если помещена в ограниченное поле обзора.

8. В таблице могут присутствовать сворачиватели частей.

9. Колонки таблицы могут менять ширину.

10. Таблица может быть динамичной, когда заранее не определено кол-во рядов.

11. Таблица должна иметь возможность сортироваться.

12. Таблица должна иметь возможность раскрашиваться вся или по выбранным рядам/колонкам.

Боже упаси делать таблицу на простых прямоугольниках и текстах, т.к. такие "ячейки" не являются элементами и это тупиковый путь.

У меня эти штуки реализованы. Пусть и не во всем идеально.... но работают и в порядке.

Таблица, определенно один из самых сложных элементов. Самый комплексный, включающий множество механизмов и различных решений.
 
Вот такая эта таблица.))) Помню, первым на канвасе ее сделал Анатолий. Тажело ему пришлось... Многие вещи реализовал очень красиво, можно было позавидовать.
 
Реter Konow:
Вот такая эта таблица.))) Помню, первым на канвасе ее сделал Анатолий. Тажело ему пришлось... Многие вещи реализовал очень красиво, можно было позавидовать.

Делаем не красиво а функционально. Потихоньку делаю нужные объекты, подход отличается от других решений. В ячейки таблицы можно помещать любые объекты. Добавил в движок поддержку канваса, получается, что используются и канвас и обычные прямоугольники. Демка прилагается

Перетаскивать можно за левый верхний пустой угол.


Файлы:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

Делаем не красиво а функционально. Потихоньку делаю нужные объекты, подход отличается от других решений. В ячейки таблицы можно помещать любые объекты. Добавил в движок поддержку канваса, получается, что используются и канвас и обычные прямоугольники. Демка прилагается

Перетаскивать можно за левый верхний пустой угол.


Неплохо, неплохо... 

Сначала критика:

Концептуально, это одно большое окно, или несколько слепленных маленьких? К сожалению, подвижности окна(окон) не наблюдается. Механика работает немного странно, есть над чем еще подумать. Не нашел возможности что либо помещать в ячейки, они не интерактивны. Пока еще нет ни одного рабочего элемента управления, даже простой кнопки или чекбокса. Структурно, окна не проработаны - ни рамки, ни кнопки сворачивания или масштабирования, или захудалого значка... Даже без выполнения их функций и ради декоративности их стоит поместить, ведь иначе, непонятно на что мы смотрим. Конечно... очень сыро.

Похвала:

Несмотря на недостатки, вижу большой прогресс и потенциал. Конечно, если хватит терпения и сил, в конце концов может что то получится. Ну, а талант несомненно имеется.)


П.С. порадовала прокрутка (хоть и хромая) и пусть ограниченная, но "резиновость" подокон. :)))

П.С.С. Извиняюсь, подокна можно перемещать! Сначала не разобрался. Конечно, пространство перемещения сильно ограничено, но все же...
 
Еще один плюс   :  лейбл "А" (неизвестно зачем) интерактивен! Это уже хорошо.
 

К сожалению, у меня после загрузки окна не распологаются как нужно:


Попытки поставить их в центр не приводят к успеху.
 
Реter Konow:

Неплохо, неплохо... 

Сначала критика:

Концептуально, это одно большое окно, или несколько слепленных маленьких? К сожалению, подвижности окна(окон) не наблюдается. Механика работает немного странно, есть над чем еще подумать. Не нашел возможности что либо помещать в ячейки, они не интерактивны. Пока еще нет ни одного рабочего элемента управления, даже простой кнопки или чекбокса. Структурно, окна не проработаны - ни рамки, ни кнопки сворачивания или масштабирования, или захудалого значка... Даже без выполнения их функций и ради декоративности их стоит поместить, ведь иначе, непонятно на что мы смотрим. Конечно... очень сыро.

Похвала:

Несмотря на недостатки, вижу большой прогресс и потенциал. Конечно, если хватит терпения и сил, в конце концов может что то получится. Ну, а талант несомненно имеется.)


П.С. порадовала прокрутка (хоть и хромая) и пусть ограниченная, но "резиновость" подокон. :)))

П.С.С. Извиняюсь, подокна можно перемещать! Сначала не разобрался. Конечно, пространство перемещения сильно ограничено, но все же...

Тут все окна (общее, ячейки, прокрутка, ползунок для прокрутки....) имеют единый принцип работы, только отличаются свойствами, отличаются только визуальным представлением, есть и невидимые окна, поэтому визуализацию стакана можно поместить в любое окно, даже в ползунок или красный маленький квадрат, разницы нету.

Стаканы в ячейках интерактивные как и в индикаторе(перемещение самого стакана за график тиков и заголовок, вертикальное перемещение цен), только события прокрутки колёсика обрабатывает правая прокрутка таблицы.

Эта таблица будет служить базовым визуальным элементом для создания разных списков и таблиц, не имеет значения что помещается внутрь ячейки, можно разные объекты или даже такие же таблицы

 
Реter Konow:
Еще один плюс   :  лейбл "А" (неизвестно зачем) интерактивен! Это уже хорошо.

Тестировали индикатор стакана? Это включение/отключение автоматической прокрутки цен

 
Aliaksandr Hryshyn:

Тестировали индикатор стакана? Это включение/отключение автоматической прокрутки цен

Да, сам стакан и тиковый индикатор выполнены хорошо. К ним меньше всего претензий. Сами писали или заимствовали где то?

Причина обращения: