Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 25
1

Раскраска строк StringGrid в зависимости от данных

05.02.2014, 11:11. Показов 3182. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день! Очень прошу помочь новичку разобраться со следующей задачей:

Необходимо закрасить строку StringGrid в зависимости от того, какие данные находятся в ячейке. Например, если Cells[2,5]='1', закрасить всю строку 5 в зелёный цвет, если Cells[2,9]='0', закрасить всю строку 9 в синий цвет, и т. д... Смотрела уже существующие темы на данном форуме о раскраске StringGrid, не смогла разобраться и подогнать под свою задачу

Заранее спасибо за помощь!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2014, 11:11
Ответы с готовыми решениями:

Раскраска в StringGrid
Всем привет! Срочно нужно дорешать задачу. Я её почти сделал. А вот и она сама Дана...

Раскраска stringgrid
как можно раскрасить stringgrid, к примеру 1 строчку светло-зеленым, а другую зеленым?

Раскраска StringGrid нажатием
Необходимо сделать так, чтобы ячейки StringGrid закрашивались в красный цвет по нажатию на ячейку...

Раскраска ячеек в stringgrid
Есть stringgrid заполненный данными. Пользователь может изменить какое-либо данное. Как только это...

4
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
05.02.2014, 11:15 2
Используй для этого обработчик Грида OnDrawCell.
Пример: Ход возможные ходы шахматного коня, таблица
0
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 25
05.02.2014, 11:26  [ТС] 3
FIL, А как правильно прописать условие на поиск нужных данных в таблице? Допустим, если поиск будет производиться только по второму столбцу, как написать что-то типа следующего?

Delphi
1
2
3
for i:=1 to 10 do 
if StringGrid1.Cells[1,i]='Кошка' then
Brush.Color := clWindow;
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
05.02.2014, 11:54 4
Лучший ответ Сообщение было отмечено Shilka как решение

Решение

OnDrawCell вызывается для КАЖДОЙ ячейки.
Закрасить строку можно так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TStringGrid), Canvas do
  begin
    if Cells[1, ARow] = 'Кошка' then
      Brush.Color := clBtnFace;
    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top + 2, Cells[ACol, ARow]);
  end;
end;
Но для закраски всей строки, после изменения данных в таблице придется вызывать
Delphi
1
StringGrid1.Repaint;
При ручном вводе данных можно сделать так:
Delphi
1
2
3
4
5
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  const Value: string);
begin
  StringGrid1.Repaint;
end;
1
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 25
05.02.2014, 12:01  [ТС] 5
FIL, Огромное спасибо за помощь! Кажется, разобралась
0
05.02.2014, 12:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2014, 12:01
Помогаю со студенческими работами здесь

раскраска таблицы в зависимости от даты(2)
Вечер добрый форумчане, есть 2 вопроса. 1) (файл - 1) здесь макрос работает не так как хотелось...

StringGrid раскраска и немного sql
Есть программа рисующая календарь и БД хранящая информацию по отпускам. В идеале хотелось бы по...

Произворльная раскраска ячеек JTable в зависимости от значений которых нет в видимой таблице
Всем привет! Раскрасить ячейки в зависимости от данных имеющихся в этих ячейках не сложно. А...

Ошибка при загрузке данных из StringGrid в массив строк
Всё, что знал уже перепробовал. Остается только просить помощи... По нажатию на кнопку Button1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru