StringGrid에서나 SortGrid에서 Enter key를 누르면 셀을 이동하는 것은 만들었습니다...
그런데 마지막 셀에서 Enter key를 누르면 새로운 Row가 생기면서 첫번째 셀로 Forcus가 이동을 해야되는 데요, 새로운 Row는 생겼는데 첫번째 셀로 focus롤 어떻게 가나요...
고수님들의 도움이 필요합니다...
참, 이런기능을 손쉽계 할수있는 방법이 있으면 도와주세요...
한화면에 StringGrid가 여러개가 있어서 코딩이 너무 많아지내요...
위의 기능을 간단히 할수있는 방법을 부탁드립니다.
그럼 ...
답변 면저 감사합니다...
스트링그리드의 OnKeyDown이벤트에서 아래와 같이 코딩해보세요...
참고로 Sender파라매터를 사용하시면 여러개의 컴포넌트에 동일한 이벤트를 설정해서 똑같은 효과를 줄 수 있습니다...
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
IsLastCol, IsLastRow: Boolean;
begin
if Key = Char(vk_Return) then
begin
Key := #0;
IsLastCol := (TStringGrid(Sender).Col = (TStringGrid(Sender).ColCount - 1));
IsLastRow := (TStringGrid(Sender).Row = TStringGrid(Sender).RowCount - 1);
if IsLastCol and IsLastRow then // 마지막 셀일때
begin
TStringGrid(Sender).RowCount := TStringGrid(Sender).RowCount + 1;
TStringGrid(Sender).Col := 0;
TStringGrid(Sender).Row := TStringGrid(Sender).Row + 1;
end
else if IsLastCol then // 마지막 컬럼일때
begin
TStringGrid(Sender).Col := 0;
TStringGrid(Sender).Row := TStringGrid(Sender).Row + 1;
end
else
begin
TStringGrid(Sender).Col := TStringGrid(Sender).Col + 1;
end;
end;
end;
^^ 항상 즐코하세요...