Есть MemTableEh в котором есть два read-only поля ID, NAME - соответственно, ID и наименование записи. Все остальные поля типа BLOB и их может быть сколько угодно - создаются они в run-time. В BLOB-полях хранятся данные в произвольном формате - текст, целое число, дробное число, идентификатор значения из выпадющего списка (целое число), и так далее, более 12 форматов. Всё это выводится в грид. Требуется реализовать для каждой ячейки грида свой кастомный редактор в зависимости от типа поля в ячейке.
Сейчас это реализуется путём вызова дополнительного окна, в котором пользователь меняет значение ячейки и сохраняет его, но это очень не удобно, т.к. требуется масса лишних действий. Можно конечно добавить в каждую ячейку EditButton и вызывать по клику на него DropDown-форму с редактором, но это решение по эффективности не лучше уже реализованного.
Хотелось бы иметь у грида событие типа OnGetCellEditor в которое бы передавались "координаты" текущей ячейки, и был бы параметр Editor, в который можно было бы вернуть указатель на редактор для данной ячейки, который бы отрисовывался гридом внутри ячейки при входе в режим её редактирования. В качестве редактора можно было вернуть любой контрол из библиотеки Ehlib - т.е. Edit, Combobox, Checkbox, Memo и так далее. При этом редактор бы отрисовывался строго внутри границ ячейки, а при выходе из режима редактирования автоматически грохался. Соответственно, разработчику оставалось бы только написать в событии код по определению того, какой контрол требуется для редактирования ячейки, создать и инициализировать контрол и вернуть его гриду.
Сообщите о возможности реализации данного функционала в ближайших релизах, или о вариантах самостоятельного решения задачи путём доработки ваших компонентов.
p.s. Данный функционал реализован в гридах js-библиотеки ExtJS для веба - невероятно удобно.
|