Q&A

  • StringGrid에서 다음 행으로 커서를 이동할려면...


StringGrid에서 값을 입력하고 엔터를 입력하면 다음 행으로 갈 수 있도록은 했지만, 다음 행으로 이동은 하되, 입력을 할려면 엔터를 한번 더 입력해야 합니다.



커서가 다음 행으로 이동하는 즉시 바로 커서가 입력이 가능하도록 할 수 있는 방법이 없을까요?

1  COMMENTS
  • Profile
    배불뚝 1999.12.10 00:45
    황선희 wrote:

    >

    > StringGrid에서 값을 입력하고 엔터를 입력하면 다음 행으로 갈 수 있도록은 했지만, 다음 행으로 이동은 하되, 입력을 할려면 엔터를 한번 더 입력해야 합니다.

    >

    > 커서가 다음 행으로 이동하는 즉시 바로 커서가 입력이 가능하도록 할 수 있는 방법이 없을까요?



    영진출판사 delphi programming bible에서 발췌하였습니다.

    저도 요걸 거의 그대로 쓰고 있거든요....

    수정,저장기능은 따로 버튼을 추가해서 처리하였고,

    이 아래는 stringgrid 마지막행에서 엔터키 때린 후 다음 행을 만들고

    커서를 새로 입력할 컬럼으로 이동하는 것에 대한 것이예요.

    좋은 하루 되세요.



    procedure Tform1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

    var

    Last_Row, i : Integer;

    begin

    Last_Row := StringGrid1.RowCount - 1; //마지막행얻어오기



    //마지막행의 첫번째 컬럼의 값이 널이 아닐 경우에만

    //새로운 행을 추가한다...

    if StringGrid1.Cells[1, Last_Row] <> '' then

    begin



    //마지막행에서 엔터키를 눌렀을 경우

    if (StringGrid1.Row = Last_Row) and (Key = #13) then

    begin



    //새로운 행 추가

    StringGrid1.RowCount := StringGrid1.RowCount + 1;



    //새로운 행 초기화

    for i := 0 to 4 do

    StringGrid1.Cells[i, StringGrid1.RowCount + 1] := '';



    //새로운 행으로 커서이동

    StringGrid1.Row := StringGrid1.RowCount - 1;



    //새로운 행의 첫번째컬럼으로 커서이동

    StringGrid1.Col := 1;

    end;

    end;

    end;