Кнопка в гриде

Здравствуйте!

Подскажите, можно ли добавить поле с кнопкой в грид?
Так чтобы кнопка была на против каждой записи и ее можно было отображать и скрывать по желанию.

Или может быть добавить картинку кнопки и обрабатывать ее нажатие. Но в этом случае мне не нравится то, что картинку для каждой записи придется хранить в таблице и добавлять каждой новой записи.

Подскажите, как это правильно реализовать.

Нравится

6 комментариев

Здравствуйте.

К сожалению, нельзя обработать событие нажатия на отдельную ячейку определенной строки. Предлагаю в окне реестра записей добавить кнопку (под самим реестром, к примеру), и на событии OnDatasetAfterPositionChange, для объекта dlData, считать значение определенной ячейки и, в зависимости от этого, скрывать или отображать данную кнопку.

if (Dataset('SomeField') == 'this')
{
       Button.IsVisible = false;
}
else
{
       Button.IsVisible = true; 
}

Дмитрий, а возможен такой вариант, как в стандартных лукапах?
Т.е сделать открытие нужного окна по нажатию по тексту.

пример

Если кликнуть с нажатой Alt - откроется карточка.

На скриншоте как раз карточка и открывается.
Вопрос в том, можно ли сделать так же для текстового поля. По клику на текст открывать нужное окно

"Зверев Александр" написал:

Если кликнуть с нажатой Alt - откроется карточка.

А если так:
В гриде есть событие OnLookupColumnClick для кликов по лукапным колонкам. Поле в датасете не трогаем, а колонку в гриде делаем со свойством LookupType равным dgcltLookup.
Пишем обработчик вроде:

function grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift) {
	if (DataGridColumn.Name == 'colTitle') {
		ShowInformationDialog('Заголовок:' + dlData.Dataset('Title'));
		return;
	}
	scr_BaseGridArea.grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift);
}

Вместо messagebox'а подставить открытие нужного окна.

Интересная идея, спасибо

Показать все комментарии