Q&A

  • DBgrid 입력시 DataSet 에 적용되기전 값알기
DBgrid 에서 입력이나 수정시 엔터를 치기전까지는 DataSet 에 적용이 되지않아

방금 입력한 값을 OnKeyPress Event 같은 곳에서 검증등 사용을 할려면

어떻게 알아내는 방법이 없는지요



부탁드립니다...

그럼 행운이



3  COMMENTS
  • Profile
    하얀까마귀 2000.01.21 03:58
    김종섭 wrote:

    > DBgrid 에서 입력이나 수정시 엔터를 치기전까지는 DataSet 에 적용이 되지않아

    > 방금 입력한 값을 OnKeyPress Event 같은 곳에서 검증등 사용을 할려면

    > 어떻게 알아내는 방법이 없는지요

    >

    > 부탁드립니다...

    > 그럼 행운이

    >



    -----------------------

    답변이 안될줄로 압니다만.. 그건 방법이 없습니다.

    DBGrid 소스를 보시면 InplaceDBMaskEdit라는 것이 있습니다. 실제로 DBGrid는

    사용자가 입력을 요구할때 Editor모드일때 이 MaskEdit를 생성시킵니다..

    그렇게 사용자의 입력을 받고 여기서 빠져나갈때 DB에 적용시킵니다.

    물론 이 MaskEdit에 접급할수 있는방법은 정상적인 방법으로는 없고요...

    다른 Grid도 마찬가지입니다. StringGrid또한 InplaceMaskEdit라는 것을 생성시키니까요

    그래서 table에 적용되기전에 알수 있는방법은 없습니다.

    단지 TempDB에 Write하게 하고 그 내용을 참조하여 실제 Table에 Write하기전에

    첵크 하는 방법밖에는......

    아마 이 문제로 고민하시는 분이 많을줄로 아는데... DBGrid를 하나 만들기 전에는

    안될겁니다....

    그럼.....

    더 궁금한게 있으면 메일 주세요..

  • Profile
    유효종 2000.01.20 22:42
    김종섭 wrote:

    > DBgrid 에서 입력이나 수정시 엔터를 치기전까지는 DataSet 에 적용이 되지않아

    > 방금 입력한 값을 OnKeyPress Event 같은 곳에서 검증등 사용을 할려면

    > 어떻게 알아내는 방법이 없는지요

    >

    > 부탁드립니다...

    > 그럼 행운이

    >



    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

    begin

    if Key = #13 then begin

    ShowMessage(dbgrid1.SelectedField.Text);

    end;

    end;



  • Profile
    김종섭 2000.01.21 02:51
    유효종 wrote:

    > 김종섭 wrote:

    > > DBgrid 에서 입력이나 수정시 엔터를 치기전까지는 DataSet 에 적용이 되지않아

    > > 방금 입력한 값을 OnKeyPress Event 같은 곳에서 검증등 사용을 할려면

    > > 어떻게 알아내는 방법이 없는지요

    > >

    > > 부탁드립니다...

    > > 그럼 행운이

    > >

    >

    > procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

    > begin

    > if Key = #13 then begin

    > ShowMessage(dbgrid1.SelectedField.Text);

    > end;

    ========================================================

    유효종씨 위의 예 감사합니다.

    하지만 위의 예를 가지고 하면 지금방금입력한 값을 메세지에 보여주지 못합니다.

    한번 해보시면 전에 Table 에 가지고 있던 값만 돌려줌니다



    > end;

    >