Элемент MST_DragRow предназначен для перетаскивания выбранной строки курсором (зажатой левой клавишей мыши) в таблице строк MTStrTbl (вкладка Интерфейс 2, туда же и устанавливается по умолчанию). Работает как и все остальные элементы этой группы как менеджер и не требует каких либо настроек, достаточно подключить к таблице (свойство MSTControl). Точки в элементе все спрятаны, так как в большинстве случаев в них нет надобности. Но при желании можно и запретить перетаскивание определенных строк и отменить его в любой момент, а так же изменить вид перетаскиваемой строки.
Из известных проблем на данный момент:
-лучше не подключать сразу два элемента к одной таблице
-при включенном у таблицы множественном выборе (свойство MultiSelect = True) случается вместо начала перетаскивания строки уход в правый нижний край таблицы с выделением всего
Скачать архив с элементом и примерами: Ссылка [29.04.2025 v1.1]
В архиве также pas файл для работы с компилятором FPC 3.2.2. Тема по компилятору: https://forum.hiasm.com/topic/61538
Элемент в тестовом режиме и на данный момент выложен для ознакомления.
Редактировалось 14 раз(а), последний 2025-04-29 10:32:44
Этот топик читают: Гость
Ответов: 2415
Рейтинг: 691
|
|||
карма: 11 |
| ||
Голосовали: | strannik_nebes, Gitarist |
Ответов: 191
Рейтинг: 5
|
|||
Каких-то сбоев не выявлено, кроме указанных выше проблем.
|
|||
карма: 1 |
|
Ответов: 264
Рейтинг: 18
|
|||
С установленным AdjustControls не дружит
![]() |
|||
карма: 3 |
|
Ответов: 2415
Рейтинг: 691
|
|||
fox-video, проблема в устаревшем файле таблицы MTStrTbl. getwinstyle - добавлено в таблицу относительно не так давно и им пользуется и MST_DragRow. Так что это не ошибка элемента MST_DragRow, а проблема в том что нет пока возможности обновлять файлы и автоматически вносить изменения в них чтоб работал AdjustControls. Стараюсь сделать необходимое чтоб это исправить, описано в этой теме: Изменение свойств интерфейса
|
|||
карма: 11 |
|
Ответов: 191
Рейтинг: 5
|
|||
sla8a, С новым компилятором FPC x64 не хочет работать.
|
|||
карма: 1 |
|
Ответов: 2415
Рейтинг: 691
|
|||
strannik_nebes, прикрепил отдельно архив с файлом pas.
|
|||
карма: 11 |
| ||
Голосовали: | strannik_nebes |
Ответов: 191
Рейтинг: 5
|
|||
fix
Редактировалось 6 раз(а), последний 2025-04-14 08:47:48 |
|||
карма: 1 |
|
Ответов: 158
Рейтинг: 1
|
|||
Подскажите, почему, если сделать таблицу маленькой, с одним столбцом, то эффект "перетаскивания" действует только на последнюю и предпоследнюю строку?
Редактировалось 1 раз(а), последний 2025-04-29 01:33:25 |
|||
карма: 1 |
| ||
Голосовали: | sla8a |
Ответов: 2415
Рейтинг: 691
|
|||
Gitarist, если правильно понял то ошибка была в том что перетаскивать получалось только вниз. Была проблема в определении позиции курсора над строкой из-за того что столбец был один. Поправил, архив в первом посте обновил. Достаточно обновить pas файл.
|
|||
карма: 11 |
| ||
Голосовали: | Gitarist |
Ответов: 191
Рейтинг: 5
|
|||
sla8a, Обнаружился баг. При добавлении строки AddRow в пустую таблицу, строка помещается на вторую строку (индекс 1). Первая строка- пустая. Иногда происходит появление дублера строки захваченной мышью. Причем дублированная строка добавляется после нажатия на левую кнопку мыши. Если убрать компонент с формы, то все становится нормально.
В тестовом примере MST_RowAction не проявляется (там примитивно). В моем случае, 11 колонок, есть пустые ячейки. Приходит одна строка с 11 значениями, ничего лишнего. Редактировалось 7 раз(а), последний 2025-05-14 13:45:01 |
|||
карма: 1 |
|
Ответов: 2415
Рейтинг: 691
|
|||
strannik_nebes, лучше сделай небольшую схему где можно увидеть этот баг. Потому что даже вот это:
strannik_nebes писал(а): При добавлении строки AddRow в пустую таблицу, строка помещается на вторую строку (индекс 1). |
|||
карма: 11 |
|
Ответов: 191
Рейтинг: 5
|
|||
sla8a, Воспроизвести простой код у меня не получилось. Ищу дальше. Подозреваю, что какой-то конфликт переменных. Причем, проблема, когда в программе две и больше таблицы. DblClick точно влияет на дальнейшее поведение. Вылетают ошибки после его использования и появляется пустая строка из неоткуда вместе с добавляемой на соседней таблице. При обычном добавлении строки, кнопкой например, проблемы не наблюдаются.
--- Добавлено в 2025-05-14 15:30:11 Пример найден
Редактировалось 14 раз(а), последний 2025-05-15 08:23:52 |
|||
карма: 1 |
| ||
Голосовали: | sla8a |
Ответов: 2415
Рейтинг: 691
|
|||
strannik_nebes, получается процесс перетаскивания начинается в промежутке между очисткой таблицы и добавление строки. Посмотрю как это лучше поправить.
А протестируй у себя такую правку. Выдели элемент DragRow, нажми Ctrl+F, и в 233 строке поменяй это:
Редактировалось 1 раз(а), последний 2025-05-14 22:11:40 |
|||
карма: 11 |
|
Ответов: 191
Рейтинг: 5
|
|||
sla8a, Та проблема пофиксена. Теперь не отображается сама удержанная строка мышью, когда 2 строки в таблице. С 3-мя строками и более - норм.
|
|||
карма: 1 |
|
Ответов: 2415
Рейтинг: 691
|
|||
strannik_nebes, туже строку замени на:
Редактировалось 1 раз(а), последний 2025-05-15 09:58:20 |
|||
карма: 11 |
| ||
Голосовали: | strannik_nebes |
15