Форум — Ответы     (  К темам )
 ?  ledenezz: Проблема с DBGrid в CBuilder (07-05-2003 22:00:19)
Я заполняю Grid результатом запроса, Каким образом при скролиннге Grida можно достать значеня полей?
Допустим в Grid заносится ID и имя, Как при перемещении вниз достать значение ID текущей записи?
 Anry (08-05-2003 14:08:12)
Можно достать из события AfterScroll набора данных, который у тебя прокручивается в Grid'е.
 Павел (08-05-2003 15:38:34)
Не совсем понял
Grid связан с Table иди Query
При перемещении по Grid текущая запись в нем меняется -
вот и смотрите соответствуюший Table или Query,
связанный с данным Grid

А вообще получить значание текущей записи из самой Grid
(например для 2 столбца)

DBGrid1->Columns->Items[1]->FieldName = ... // имя этого поля
DBGrid1->Columns->Items[1]->Field->AsString = .... // значение поля текущей записи
 Anry (08-05-2003 15:49:46)
Именно это я и имел ввиду. При перемешении на другую запись в Grid'е у связанного набора данных происходит событие AfterScroll. Есть еще BeforeScroll, понятно, что оно происходит до перемешения.
 Vika (08-05-2003 16:21:26)
я извиняюсь, но непонятно, во-первых со значением, а во вторых с адресацией, т.е. это второй столбец, а какая строка?????
а если я хочу поменять каки-нить атрибуты в гриде, в зависимости от значения ячейки (цвет, фон, и т.д). Работать с таблицей я не хочу...только с гридом...
 Павел (08-05-2003 17:04:28)
Для этого есть свойство Grid-a  — DrawColumnCell
смотрите тему:
Вопрос: ( 2003-02-19 16:04:43 ) Разноцветные строки в DBGrid`е by Alex alekseyav@mail.ru site
( Как сделать разноцветные строки в Grid,
в зависимости от значения к некотром поле? )
--------------------------------------------------------------------------------
Задайте в поиске по форуму: DrawColumnCell
 Vika (08-05-2003 17:14:24)
да, но там опять же идет привязка к table, а я этого делать не хочу...
вот в чем проблема то....работать надо чисто с гридом
 Георгий (08-05-2003 17:47:19)
да не получится у тебя работать с чисто гридом, а самый простой способ уже сказали
 Павел (08-05-2003 20:45:29)
Ну что-же, если очень нужно, так и работайте чисто с Grid, никто не мешает:

//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(Column->FieldName == "ID" && Column->Field->AsInteger == 10)
DBGrid1->Canvas->Font->Color = clRed;
if(Column->FieldName == "City" && Column->Field->AsString == "Moscow")
DBGrid1->Canvas->Font->Color = clGreen;

DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
//----------------------------------------------------------------

Здесь нигде нет никакой ссылки на Table или Query, чистый Grid
В чем проблема ?
 Vika (09-05-2003 09:45:17)
Спасибо!!!!!