Показать сообщение отдельно
  #4  
Старый 21.07.2010, 12:36
An_private An_private вне форума
Прохожий
 
Регистрация: 21.07.2010
Сообщения: 5
Репутация: 10
По умолчанию

Хотел воспользоваться советом и сделать подсветку красным неправильно введеных данных в StringGrid. И напоролся на странную проблему. Но, по порядку:

Для раскраски ячеек пишу следующее:
Код:
procedure TFormMain.StringGridPLDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  with StringGridPL do begin
    Canvas.Brush.Color := PLColorsArray[ACol,ARow];
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
  end;
end;

Так как непосредственно по unselect'у ячейки никаких событий не происходит, то приходится отслеживать OnSelect и OnExit, ну тут всё работает - то есть процедура проверки отрабатывает когда надо - это я проверил.

В чем состоит проблема. Если редактируешь ячейку с StringGrid, вводишь неправильное значение и переходишь на другой элемент управления (в моём случае на другую таблицу), то ячейка красным не подсвечивается.
OnExit отрабатывает нормально, в массив цветов заносится clRed, но ячейка продолжает оставаться белой
Пробовал вызывать в OnExit и Repaint и Update - результаты нулевые.
То есть чтобы ячейка стала красной - надо сперва выбрать любую другую ячейку в той же таблице, а уже потом переходить на другую таблицу.
Что это? Баг или фича?
Ответить с цитированием