Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.07.2010, 22:16
Tonyy Tonyy вне форума
Новичок
 
Регистрация: 05.04.2010
Сообщения: 85
Репутация: 10
По умолчанию StringGrid и цветные ячейки

как сделать так, чтобы ячейка содержащая четную цифру подсвечивалась бы цветом - например желтым?
Ответить с цитированием
  #2  
Старый 01.07.2010, 22:41
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Обрабатывай событие OnDrawCell.
Ответить с цитированием
  #3  
Старый 01.07.2010, 23:46
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

как-то вот так
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  s: string;
  i: integer;
begin
  s := (Sender as TStringGrid).Cells[ACol, ARow];
  with (Sender as TStringGrid).Canvas do
  begin
    try // нужно, в случае если в ячейке не число, что бы не выскакивала ошибка
      i := StrToInt(s);
      if (i / 2) = (i div 2) then Font.Color := clYellow {если четное - то желтный цвет}
        else Font.Color := clBlue; {либо синий}
    except // если в ячейке не число
      Font.Color := clRed; // то пишем красным
    end;
  TextOut(Rect.Left + 2, Rect.Top + 2, s); // "отрисовуем" текст
  end;
end;
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel

Последний раз редактировалось Marvel, 02.07.2010 в 00:07.
Ответить с цитированием
  #4  
Старый 02.07.2010, 01:21
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Вот так, наверное, лучше. Тем более, нужно же, чтобы ячейка заливалась цветом, а не цвет текста менялся.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  X: Integer;
begin
  if TryStrToInt(StringGrid1.Cells[ACol, ARow], X) and (X mod 2 = 0) then
    with StringGrid1.Canvas do
    begin
      Brush.Color := clYellow;
      FillRect(Rect);
      TextOut(Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
    end;
end;
А такие приемчики как
Код:
(Sender as TStringGrid).Cells[ACol, ARow]
нужны, когда одна процедура является обработчиком события сразу для нескольких StringGrid'ов.

Последний раз редактировалось Kapitoshka438, 02.07.2010 в 01:24.
Ответить с цитированием
  #5  
Старый 02.07.2010, 08:33
Tonyy Tonyy вне форума
Новичок
 
Регистрация: 05.04.2010
Сообщения: 85
Репутация: 10
По умолчанию

спасибо большое всем.
Ответить с цитированием
  #6  
Старый 02.07.2010, 11:28
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

ну дык, я человеку просто показывал самый простой и понятный способ
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025