Форум — Ответы ( К темам )
? | 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) | |
Спасибо!!!!!
|