powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как перерисовать фон ячейки/строки DBGrid, к-рая получает фокус?
3 сообщений из 3, страница 1 из 1
Как перерисовать фон ячейки/строки DBGrid, к-рая получает фокус?
    #32747981
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Как узнать какая ячейка/строка сейчас в фокусе (подсвечена)?

2. Как изменить цвет фона/текста.

Нашел пример, кода на делфях, но в билдере не могу найти аналогию.
Вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  clPaleGreen = TColor($CCFFCC);
  clPaleRed = TColor($CCCCFF);
begin
  if Column.FieldName = 'Status' then //Удалите эту линию, если хотете закрасить целую линию
    if Column.Field.Dataset.FieldByName('Status').AsString <> 'a' then
      if (gdFocused in State) then //имеет ли ячейка фокус?
        DBGrid1.Сanvas.Brush.Color := clBlack //имеет фокус
      else
        DBGrid1.Сanvas.Brush.Color := clPaleGreen; //не имеет фокуса

  //Теперь давайте закрасим ячейку используя стандартный метод:
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State)
end;

Просто перерисовать фон могу, но надо перерисовывать фон/текст при изменении фокуса ячейки.

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
Как перерисовать фон ячейки/строки DBGrid, к-рая получает фокус?
    #32748129
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pre_Grid -> DBGrid

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void __fastcall TMainForm::Pre_GridDrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
  if(State.Contains(Grids::gdSelected))
    {
       Pre_Grid->Canvas->Brush->Color = TColor(0x00FD9684);
       Pre_Grid->Canvas->Font->Color = TColor(0x0080FFFF);
    };

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


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Как перерисовать фон ячейки/строки DBGrid, к-рая получает фокус?
    #32748692
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 JibSkeart

Спасибо, Jib!
Все работает, красотища!

Код: plaintext
6epkyT
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как перерисовать фон ячейки/строки DBGrid, к-рая получает фокус?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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