고수님들의 도움을 요청합니다.
다름이 아니라,,,
특정셀에 입력받은 값이 일정범위를 초과하면 에러메세지를 뿌려주고,
다시 그 위치로 포커스를 이동하고 싶은데요,,,(입력을 다시 받게끔 하려구
요,,) 잘 안되네요.. 고수님들 꼭 가르쳐주세요~~ 기다리고 있겠습니다.
이벤트는 아래와 같이 OnSelectCell 이벤트에서 구현하였습니다!!!
OnSelectCell이벤트에서 구현이 된거라 당연히 키보드를 치면 다음 셀로
이동하는게 당연하겠죠.. 그래서 이 포커스를 어떻게 제어해야하는지,,,
꼭!! 꼭!! 가르쳐주세요......
procedure TFrmJumSu.sGridSelectCell(Sender: TObject; Col, Row: Integer;
var CanSelect: Boolean);
var
Mid_Cnt : Integer;
begin
Mid_Cnt := 100; // 값의 범위
with sGrid do
begin
if StrToInt(Cells[3,Row]) > Mid_Cnt then
begin
Application.MessageBox('점수초과!! ','사용자안내',
MB_OK or MB_ICONINFORMATION);
Cells[Col,Row] := '';
//Col := 3;
//Row := 1;
Exit;
end;
end;
end;
보통이기 때문에 OnKeyPress에 넣었습니다..
OnSelectCell에서도 가능하니 응용하시기 바랍니다..
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Begin
if StrToInt(StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]) > 10 then
begin
StringGrid1.Col := StringGrid1.Col + 1;
StringGrid1.SetFocus;
StringGrid1.EditorMode := True;
end
else
begin
StringGrid1.Col := StringGrid1.Col - 1;
StringGrid1.SetFocus;
StringGrid1.EditorMode := True;
end;
Key := #0;
End;
end;