Всем приветы! У меня следующая ситуация, есть 3 столбика (но работа происходит с 2мя первыми) и сколько - то строк в компоненте stringgrid. В главной программе есть параметр, от которого зависит какие значения можно вводить в ячейки стрингрида. Допустим, этот параметр amount. Итак, возможны 2 ветки : 1) 0 < amount <= 9 - значит в ячейку стрингрида можно вводить только цифры от 1 до 9. 2) 10<=amount <=15 - значит в ячейку можно вводить как цифры от 1 до 9, так и числа от 10 до 15. На OnKeyPress я отлавливаю введённые пользователем цифры. А на OnSetEditText я пытаюсь выполнить большую часть описанного, но неособо выходит : вот этой процедурой обрабатывается событие OnSetEditText
procedure TExecute.SDAS(Sender: TObject; ACol, ARow: Integer; const Value: String); begin case execute.StringGrid2.Col of //работаем с 2мя первыми столбиками 0..1 : case (amount) of 1..9 : If ( Length(Value) > 1 ) then StringGrid2.Cells[ACol, ARow] := Value[1]; \\1 ветка 10..15 : If ( Length(Value) > 2 ) then \\2 ветка begin if StrToInt (Value[1]) = 1 then if value[2] In ['1','2','3','4','5'] then StringGrid2.Cells[ACol, ARow] := Value[1] + Value[2] else StringGrid2.Cells[ACol, ARow] := Value[1];
В процессе разбора у меня возник вопрос. Допустим в одну из ячеек мы ввели значение, а потом переключаемся на другую ячейку и выдаётся ошибка '' is not a valid integer value (или причина в том, что в одной ячейке мы ввели одно значение, потом в ней же изменили его и перешли на другую). Мне интересно, это может быть как - то связано с процедурой, которая описана выше, просто вроде бы до неё такого не было. Спасибо.