![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
как сделать так, чтобы ячейка содержащая четную цифру подсвечивалась бы цветом - например желтым?
|
|
#2
|
|||
|
|||
|
Обрабатывай событие OnDrawCell.
|
|
#3
|
||||
|
||||
|
как-то вот так
![]() Код:
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;Последний раз редактировалось Marvel, 02.07.2010 в 00:07. |
|
#4
|
|||
|
|||
|
Вот так, наверное, лучше. Тем более, нужно же, чтобы ячейка заливалась цветом, а не цвет текста менялся.
Код:
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] Последний раз редактировалось Kapitoshka438, 02.07.2010 в 01:24. |
|
#5
|
|||
|
|||
|
спасибо большое всем.
|
|
#6
|
||||
|
||||
|
ну дык, я человеку просто показывал самый простой и понятный способ
![]() |