![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Tan |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Всем приветы! У меня следующая ситуация, есть 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];
end;
end;
end;
end;
Помогите пожалуйста добить это дело. Сообщение отредактировано: Tan - 10.11.2007 16:06 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Я не понял, а чего бы тебе не сделать просто:
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var
_value: integer;
error: boolean;
begin
error := false;
try
_value := strtoint(value);
except
error := true;
end;
if error or (_value < 0) or (_value > amount)
then StringGrid1.Cells[ACol, ARow] := '';
end;
И попробуй ввести значение больше Amount или меньше 0, точно так же, как и нечисловое значение... |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 9:45 |