Показать сообщение отдельно
  #5  
Старый 02.05.2020, 21:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, именно обрабатывать сообщения от мышки и клавишь.
А как ты хотел? Написание компонентов гораздо более сложная задача, чем создание просто программ...
По поводу сортировки - фактически это сортировка списка Item'ом и вычисление координат для них:
1. Отсортировать список в нужном порядке (пусть ты используешь для хранения Item'ов какой-либо список, например TObjectList). У списков есть метод, AlphaSort если не ошибаюсь. В него передается функция-компаратор, обеспечивающая именно сравнение итемов. Т.е. саму сортироку тебе писать не надо.
2. Вычисляем кол-во Item'ов по ширине - пусть nWidth
3. Теперь для каждого Item'а вычисляем его координаты. Для этого сначала надо вычислить строку путем деления нацело на nWidth, потом столбец - отстаток от деления на nWidth. Ну и последнее - X и Y вычисляются путем умножения полученых ранее значений на ширину и высоту Item'а (с отступами сам разберешься).
Правда это все работает при одинаковых размервх Item'ов. Если у них размеры разные, то алгоритм будет сложнее и зависит от того, как ты хочешь отображать такие разнообразные элементы после сортировки.
Ответить с цитированием