Вопрос 1: Нет, нельзя. Системный класс такого не предусматривает.
Вопрос 2: Так же нельзя. При нажатии на пустую область выдается индекс строки = -1, тк мышь не попадет в область строки, и выделение автоматически сбрасывается. Можно попытаться сохранить индекс выбранной строки и при получении индекса = -1 вернуть селектор на старую позицию. Но это надо экспериментировать.
Этот топик читают: Гость
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
карма: 22 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
Ошибка: Добавь вот это в код и проверь:
|
|||
карма: 22 |
|
Ответов: 2360
Рейтинг: 683
|
|||
nesco писал(а): Добавь вот это в код и проверь: nesco писал(а): Так же нельзя. При нажатии на пустую область выдается индекс строки = -1, тк мышь не попадет в область строки, и выделение автоматически сбрасывается. Можно попытаться сохранить индекс выбранной строки и при получении индекса = -1 вернуть селектор на старую позицию. Но это надо экспериментировать.А как нажать на пустое место, так только одно событие: oldState = 2 NewState = 0 (выделение с старой строки уже снято). Вот чего оно так не логично ![]() nesco писал(а): Вопрос 1: Нет, нельзя. Системный класс такого не предусматривает. |
|||
карма: 11 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
sla8a писал(а): Если есть идея где покапать, то сообщи, попробуюПока не думал. Если будет время, то тогда тоже подумаю. sla8a писал(а): Но думаю на элементах собрать что-то попрощеНаверное проще будет. Тк цвет строки мы можем менять (при поддержке цвета, естественно) |
|||
карма: 22 |
|
Ответов: 2360
Рейтинг: 683
|
|||
По второму вопросу. Если перехватить нажатие в function WndHDR, то должно работать как надо. У меня пока что все хорошо.
Можно добавить свойство: IgnoreEmptyField=Игнорировать нажатие на пустое поле таблицы|14|1|True,False ![]()
MST_UseEditCtrl правильно отрабатывает при свойстве IgnoreEmptyField = true и клике в пустую область заканчивает редактирование и оставляет выделенным предыдущую строку. ![]()
Редактировалось 8 раз(а), последний 2025-04-11 14:37:47 |
|||
карма: 11 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
Насчет цвета текста селектора, пока ничего не делай. Есть одна идея. Будет время, вечерком гляну.
|
|||
карма: 22 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
Короче -- ни хрена не получилось. CDRF_NEWFONT не работает на селекторе, только на невыбранных строках. Думал обдурить -- не получается. При дефолтной отрисовке селектора (а это всегда будет, если не рисуем вручную и не подтверждаем потом CDRF_SKIPDEFAULT) шрифт рушится системой (там же видно, что он меняется на дефолтный системный).
Тч, твоя задумка миновать использование MST_DrawManager для отрисовки селектора с другим цветом шрифта работать не будет. Редактировалось 1 раз(а), последний 2025-04-12 03:24:33 |
|||
карма: 22 |
|
Ответов: 2360
Рейтинг: 683
|
|||
nesco писал(а): твоя задумка миновать использование MST_DrawManager для отрисовки селектора с другим цветом шрифта работать не будет.IgnoreEmptyField=Игнорировать нажатие на пустое поле таблицы|14|1|True,False FocusFrame=Рисуется рамка фокуса на таблице|14|0|True,False Первое уже писал выше, а второе позволяет избавится от рамки фокуса. Цель такой не было, но оно само попутно попалось и решил добавить. Вот эта рамка не будет рисоваться если задействовать свойство: А вот так выглядит выделенная строка с цветом текста (никакой рамки фокуса, при желании можно и с ней): Логика внесенного кода такова что система сама рисует нужное, мы только подменяем некоторые значения. -Если подключен MST_DrawManager, то вообще ничего не вносится. MST_DrawManager сам справляется и с рамкой и с выделенной строкой, нечего ему мешать. -При рисовании выделенной строки сообщаем системе что не надо её рисовать как выделенную (на индекс выделенной строки никак не влияет), заменяем цвет фона на цвет выделенной строки и цвет текста на тот что у строки. Система сами все нарисует. -Открывается возможность задать цвета выделенной строки в фокусе и цвет выделенной строки не в фокусе. Пока не вносил это дело в свойство, но очень напрашивается. -Совместимость не пострадала -FPC работает Тестировал на разных схемах, проблем не выявил. Хорошо видно на примере идущем в справке по элементу MST_RowAction. Там и цвет фона строки и цвет текста строки. Редактировалось 3 раз(а), последний 2025-04-13 15:21:19 |
|||
карма: 11 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
sla8a писал(а): -Открывается возможность задать цвета выделенной строки в фокусе и цвет выделенной строки не в фокусе. Пока не вносил это дело в свойство, но очень напрашивается.Во, тогда доканчивай с цветом. Коды IgnoreEmptyField лучше замени вот на такое:
|
|||
карма: 22 |
|
Ответов: 2360
Рейтинг: 683
|
|||
карма: 11 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
sla8a писал(а): Там case обрабатывает варианты Msg.message, разве правильно будет впихнуть еще и if?Да какая фиг разница --- Добавлено в 2025-04-13 01:21:21 Ща будем посмотреть, че там к чему Редактировалось 1 раз(а), последний 2025-04-13 01:21:21 |
|||
карма: 22 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
Таак. При мультиселекте цвет выбора не меняется со стандартного.
--- Добавлено в 2025-04-13 03:37:42 Добавлено еще несколько свойств - https://forum.hiasm.com/getfile/40553 Редактировалось 1 раз(а), последний 2025-04-13 03:37:42 |
|||
карма: 22 |
| ||
файлы: 1 | hiMTStrTbl_Change_Select_Text_Color_25_04_13(edit).zip [15.4KB] [9] |
Ответов: 2360
Рейтинг: 683
|
|||
nesco писал(а): Таак. При мультиселекте цвет выбора не меняется со стандартного.Ты взял и подвинул возможность отображать шрифт заданный строке. Добавил режим: CustomTextDefault - к селектору применяются пользовательские цвета, цвет строки остается заданным строкой) Может нужно еще добавить цвет текста для селектора без фокуса? И как насчет вынести свойства селектора из свойства Table? Думаю будет удобней пользоваться. Редактировалось 4 раз(а), последний 2025-04-13 15:21:44 |
|||
карма: 11 |
|
Разработчик
Ответов: 26252
Рейтинг: 2140
|
|||
А почему ты вот это изменил
|
|||
карма: 22 |
|
Ответов: 2360
Рейтинг: 683
|
|||
Раньше проверка была только для выделенной строки. Но при множественном выборе возможен вариант когда выделенная строка будет отменена (выделить все строки, нажать с зажатым Ctrl на строку курсором). Если включить фокусную рамку, то будет видно что строка уже не выделена, а еще держит фокус. Так же работает появление рамки и ее отсутствие при остальных режимах. Вот и поменял. Редактировалось 6 раз(а), последний 2025-04-13 13:56:01 |
|||
карма: 11 |
|