powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как добавить текст непосредственно в ячеёку DBGrid?
6 сообщений из 6, страница 1 из 1
Как добавить текст непосредственно в ячеёку DBGrid?
    #32017209
MaXimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такова: имеется DBGrid, в нем пуздой столбец, т.е. не связанный с полем базы данных. Необходимо добавить текст в ячейку грида, то есть так, чтобы он был только на экране, а в базе не сохранялся. Мне тут посоветовали создать вычисляемое поле, но это не катит, потому что в гриде отображается OraQuery, и возникает шняга DataSet Not In Edit Mode.
...
Рейтинг: 0 / 0
Как добавить текст непосредственно в ячеёку DBGrid?
    #32017236
Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему же вычисляемое поле не катит? Ещё как катит, только значение для поля нужно задавать в событии OnCalcFields у твоего датасета и всё будет работать
...
Рейтинг: 0 / 0
Как добавить текст непосредственно в ячеёку DBGrid?
    #32017585
Виктор Светлов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вполне может не катить. Например, если ошибка в исходниках компонентов. Когда не катит, наблюдается у TADODataset, если она CanModify=false. Если очень надо, можно:
1. Снять ReadOnly. Ничего с выборкой не будет, если грид ReadOnly.
2. Покопаться в исходниках компонента.
3. Добавить TClientDataSet и туда сбросить записи. В этом случае вообще можно делать что угодно.

Всегда пожалуйста
...
Рейтинг: 0 / 0
Как добавить текст непосредственно в ячеёку DBGrid?
    #32017628
MIKLUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Вариант более сложный, чем с вычисляемым полем:

У TDBGrid есть такое событие OnDrawColumnCell. Из названия следует, что он возникает, когда требуется перерисовать ячейку. Поэтому 1) Создаем новую колонку (без подцепления поля); 2) В обработчике TDBGrid проверяем, что если у "текущей" колонки нет поля (параметр Column = nil), то через свойство Canvas DBGrid-a и координаты полученные из параметра Rect с использованием метода TextOut, или подобный, отрисовываем текст.

Еще более "окольный" путь, это использование обработчика событий OnGetText объекта TField? который позволяет выводить произвольный текст для поля. Именно этот текст (свойство TField.Text) и отображается во всех Data-Aware контролами.

Желаю удачи.
...
Рейтинг: 0 / 0
Как добавить текст непосредственно в ячеёку DBGrid?
    #32017629
MIKLUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очепятка: выше вместо Column = nil нужно Column.Field = nil.
...
Рейтинг: 0 / 0
Как добавить текст непосредственно в ячеёку DBGrid?
    #32018509
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через обработчик OnDrawColumnCell этого DBGrid-а можно в ячейке чего угодно нарисовать, хоть картинку, хоть тест. Я например в ячейках столбики горизонтальной гистограммы рисую, и ещё сверху надписываю количество процентов (неохота было компоненты для деловой графики подключать для такой маленькой задачки, вот я и воспользовался DBGrid-ом не по назначению).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как добавить текст непосредственно в ячеёку DBGrid?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]