Здравствуйте!
Подскажите, можно ли добавить поле с кнопкой в грид?
Так чтобы кнопка была на против каждой записи и ее можно было отображать и скрывать по желанию.
Или может быть добавить картинку кнопки и обрабатывать ее нажатие. Но в этом случае мне не нравится то, что картинку для каждой записи придется хранить в таблице и добавлять каждой новой записи.
Подскажите, как это правильно реализовать.
Нравится
Здравствуйте.
К сожалению, нельзя обработать событие нажатия на отдельную ячейку определенной строки. Предлагаю в окне реестра записей добавить кнопку (под самим реестром, к примеру), и на событии OnDatasetAfterPositionChange, для объекта dlData, считать значение определенной ячейки и, в зависимости от этого, скрывать или отображать данную кнопку.
if (Dataset('SomeField') == 'this') { Button.IsVisible = false; } else { Button.IsVisible = true; }
А если так:
В гриде есть событие OnLookupColumnClick для кликов по лукапным колонкам. Поле в датасете не трогаем, а колонку в гриде делаем со свойством LookupType равным dgcltLookup.
Пишем обработчик вроде:
function grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift) { if (DataGridColumn.Name == 'colTitle') { ShowInformationDialog('Заголовок:' + dlData.Dataset('Title')); return; } scr_BaseGridArea.grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift); }
Вместо messagebox'а подставить открытие нужного окна.