В RxDBGrid новая возможность - кнопки редактора ячеки

Модераторы: alexs, Модераторы

Ответить
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

В RxDBGrid новая возможность - кнопки редактора ячеки

Сообщение alexs »

Реализовал возможность создания в гриде дополнительных кнопок в редакторе ячейки.
Для примера можно посмотреть демку RxDBGrid - колонка цена.

Ещё не работают изображения для предопределённых стилей кнопок.
Если есть у кого хорошие картинки - буду рад помощи.
Ну и, как всегда, принимаю багрепорты и предложения по улучшению функциональности.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Судя по тишине - никому не нужно?
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

я посмотрел, попробовал
вроде все пока работает без проблем
в одном из своих проектов включил для использования :)
vert
новенький
Сообщения: 19
Зарегистрирован: 11.11.2012 07:56:26

Сообщение vert »

alexs, помогите с решением.
Использую кнопку в колонке с датой для открытия стандартного CalendarDialog. Дату в запросе датасета форматирую

Код: Выделить всё

// SQLite 
SELECT *, strftime('%d.%m.%Y', birth_date) AS F_birth_date
FROM members

и назначаю FieldName:= F_birth_date (понятно, что в этом случае изменения в ячейке не будут сохраняться в базу данных, поэтому и вызываю диалог с календарём, после вызова которого сохраняю дату в бд в оригинальном формате (гггг-мм-дд)). Но, видимо, ячейка при этом переходит в ReadOnly и кнопка в ячейке становится недоступной.
Как бы обойти? Нужен доступ к кнопке при недоступном для редактирования содержимом ячейки.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

vert
Проверь ReadOnly у соответсвующего поля DataSet-а.
vert
новенький
Сообщения: 19
Зарегистрирован: 11.11.2012 07:56:26

Сообщение vert »

alexs, спасибо за ответ. Было включено readolnly. Теперь кнопка доступна, но как бы сделать, чтобы само значение ячейки грида нельзя было изменить напрямую? Пробовал DIrectInput у столбца dbgrida, одинаково, что с ним, что без него.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Column.ButtonStyle = cbsNone - оно?
vert
новенький
Сообщения: 19
Зарегистрирован: 11.11.2012 07:56:26

Сообщение vert »

Нет, при cbsNone кнопка, которую я добавил в EditButtons столбца, не отображается. Больше всего похоже на то, что мне нужно, cbsButton - в ячейке ничего напечатать нельзя, а кнопка из EditButtons доступна. Но также появляется стандартная кнопка с текстом [...] Может, можно её как-то скрыть? Или поместить на неё своё изображение? В крайнем случае, просто назначить на эту стандартную кнопку своё событие (если подскажете, как, буду признателен)
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Надо подумать...
vert
новенький
Сообщения: 19
Зарегистрирован: 11.11.2012 07:56:26

Сообщение vert »

Сделал пока через onEditButtonClick дбгрида.
vert
новенький
Сообщения: 19
Зарегистрирован: 11.11.2012 07:56:26

Сообщение vert »

Поставил cbsAuto и сделал такой обработчик на нажатие клавиши в колонке:

Код: Выделить всё

procedure TMainForm.DB_membersKeyPress(Sender: TObject; var Key: char);
  begin
    if DB_members.SelectedColumn.Index = 4 then
      Key:= #0;
  end
Ответить