Показать сообщение отдельно
Старый 29.07.2024, 15:21   #47  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от pitersky Посмотреть сообщение
Коллеги, ну зачем же так сурово? можно же всё проще сделать существующими механизмами:
1) написать нужную проверку, которая возвращает true/false (последнее - в виде checkFailed)
2) в строчке на active эту проверку вызывать. если false - рисовать в отдельном поле красный квадратик (как при разноске складских журналов)
3) по нажатию кнопки - делать эту же проверку, но выводить false-результат в инфолог

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

Тогда можно не запрещать на самописных кнопках нажатие (не использовать button.enable()) а всегда разрешать нажать кнопку, так как если кнопку нажимать было нельзя то проверка сама скажет о себе в инфолог почему нельзя (да, многие юзеры его не читают, но зато читает первая линия техподдержки и консультанты, т.е. цепочка задействованных специалистов все равно будет короче - Profit !). Документацию подробно можно при этом не вести. Все равно она быстро устаревает и зачастую не до конца соответствует тому как все работает в реальности (как следствие регулярно возникают проблемы которые эскалируются до консультантов, они не могут сами посмотреть и в итоге по цепочке доходит до программистов, время у всех тратится напрасно, юзеры по итогу напрягаются - аксапта плохая - специалисты по ней еще хуже).

Т.е. при такой схеме, мы автоматом получаем актуальное сообщение почему нажатие кнопки невозможно. Удобно и экономно в поддержке.

Правда при этом все же хотелось бы просигнализировать пользователю что кнопку нажимать не следует.
Можно вызывать на active метод проверки из пункта а. с подавлением вывода в инфолог.
А если метод вернул false, то как-то визуально помечать невозможность нажатия кнопки.
Например :
1. Делать шрифт на кнопке серым (как будто кнопка засерена, но тем не менее нажимается. Нелучший вариант, так как скорее всего никто и не попытается нажать)
2. Или курсивом
3. Или дорисовывать на кнопке иконку со специальным запретным значком (красная иконка с знаком "проезд запрещен" или что-то в этом духе. Если таких кнопок будет много, то может рябить в глазах поэтому что-то нейтральное лучше поставить)