if (StrToInt(StringGrid1.Cells[ACol,ARow])>=1985)and (StrToInt(StringGrid1.Cells[ACol,ARow])<=2010) then
data[ARow-1].year:=StringGrid1.Cells[ACol,ARow]
else if Length(StringGrid1.Cells[ACol,ARow])>=4 then begin
MessageDlg('гê ïîâèíåí áóòè â ìåæàõ 1985-2010',mtError,[mbOK],0);
StringGrid1.Cells[ACol,ARow]:=data[ARow-1].year
end;
Проверка года в StringGrid
Код:
Если ввести год из трех цифр то ошибку не получаешь.
Подскажите может можно пойти другим путем.
Код:
procedure TForm8.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if (StringGrid1.Col=5) and (StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]<>'') then begin
if (StrToInt(StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])>=1985)and
(StrToInt(StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])<=2010) then
data[StringGrid1.Row-1].year:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]
else begin
MessageDlg('гê ïîâèíåí áóòè â ìåæàõ 1985-2010',mtError,[mbOK],0);
StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=data[StringGrid1.Row-1].year;
end;
end;
end;
ARow: Integer; var CanSelect: Boolean);
begin
if (StringGrid1.Col=5) and (StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]<>'') then begin
if (StrToInt(StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])>=1985)and
(StrToInt(StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row])<=2010) then
data[StringGrid1.Row-1].year:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]
else begin
MessageDlg('гê ïîâèíåí áóòè â ìåæàõ 1985-2010',mtError,[mbOK],0);
StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=data[StringGrid1.Row-1].year;
end;
end;
end;
Поставил в событие onSelectCell, но еще надо что при возникновении ошибки в другую ячейку не переходило.