Q&A

  • (Sender as TObject) 에 관련된 질문
한 폼에 dbgrid가 7개가 있고 10개 정도의 에디트 박스가 있습니다.



form의 onkeypress event에 아래와 같이 코딩을 했는데 디비그리드에서

엔터를 누르면 "invalid type cast" 라고 나오는 군요.

일일이 7개의 디비그리드를 if문을 주어서 할 수도 없고

고수님들의 조언 바랍니다.



if (key = #13) and (ActiveControl = (sender as TDbgrid)) Then

begin

Postmessage( (sender as TDbgrid).Handle,WM_keyDown,VK_TAB,0) ;

end

else if (key = #13) Then

begin

SelectNext(Activecontrol as Twincontrol,True,True) ;

Key := #0 ;

end ;





위의 경우에는(디비그리드에서 엔터칠경우만) invalid type cast 의 에러가 나오며

아래의 경우는 에러는 나지 않지만 엔터가 먹지 않네요.



if (key = #13) and (ActiveControl = Tbdgrid(sender)) Then

begin

Postmessage( TDbgrid(Sender).Handle,WM_keyDown,VK_TAB,0) ;

end

else if (key = #13) Then

begin

SelectNext(Activecontrol as Twincontrol,True,True) ;

Key := #0 ;

end ;





2  COMMENTS
  • Profile
    권민호 2000.08.30 09:36
    홍광기 wrote:

    > 한 폼에 dbgrid가 7개가 있고 10개 정도의 에디트 박스가 있습니다.

    >

    > form의 onkeypress event에 아래와 같이 코딩을 했는데 디비그리드에서

    > 엔터를 누르면 "invalid type cast" 라고 나오는 군요.

    > 일일이 7개의 디비그리드를 if문을 주어서 할 수도 없고

    > 고수님들의 조언 바랍니다.

    >

    > if (key = #13) and (ActiveControl = (sender as TDbgrid)) Then

    > begin

    > Postmessage( (sender as TDbgrid).Handle,WM_keyDown,VK_TAB,0) ;

    > end

    > else if (key = #13) Then

    > begin

    > SelectNext(Activecontrol as Twincontrol,True,True) ;

    > Key := #0 ;

    > end ;

    >

    >

    > 위의 경우에는(디비그리드에서 엔터칠경우만) invalid type cast 의 에러가 나오며

    > 아래의 경우는 에러는 나지 않지만 엔터가 먹지 않네요.

    >

    > if (key = #13) and (ActiveControl = Tbdgrid(sender)) Then

    > begin

    > Postmessage( TDbgrid(Sender).Handle,WM_keyDown,VK_TAB,0) ;

    > end

    > else if (key = #13) Then

    > begin

    > SelectNext(Activecontrol as Twincontrol,True,True) ;

    > Key := #0 ;

    > end ;

    >

    >

    아래와 같이 하면 될 것입니다.

    if (key = #13) and (ActiveControl is Tbdgrid) Then

    begin

    Postmessage((ActiveControl as TDBGrid).Handle,WM_keyDown,VK_TAB,0) ;

    end

    else if (key = #13) Then

    begin

    SelectNext(Activecontrol as Twincontrol,True,True) ;

    Key := #0 ;

    end ;



  • Profile
    최석기 2000.08.30 01:24
    안녕하세요..

    델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다.



    님 Form의 KeyPress에서 다음돠 같이 사용이 됐다면 Sender는 Form이 되겠네요..

    그것을 TDbGrid로 cast 하니까 당연히 그런 에러가 발생할꺼 같네요..



    홍광기 wrote:

    > 한 폼에 dbgrid가 7개가 있고 10개 정도의 에디트 박스가 있습니다.

    >

    > form의 onkeypress event에 아래와 같이 코딩을 했는데 디비그리드에서

    > 엔터를 누르면 "invalid type cast" 라고 나오는 군요.

    > 일일이 7개의 디비그리드를 if문을 주어서 할 수도 없고

    > 고수님들의 조언 바랍니다.

    >

    > if (key = #13) and (ActiveControl = (sender as TDbgrid)) Then

    > begin

    > Postmessage( (sender as TDbgrid).Handle,WM_keyDown,VK_TAB,0) ;

    > end

    > else if (key = #13) Then

    > begin

    > SelectNext(Activecontrol as Twincontrol,True,True) ;

    > Key := #0 ;

    > end ;

    >

    >

    > 위의 경우에는(디비그리드에서 엔터칠경우만) invalid type cast 의 에러가 나오며

    > 아래의 경우는 에러는 나지 않지만 엔터가 먹지 않네요.

    >

    > if (key = #13) and (ActiveControl = Tbdgrid(sender)) Then

    > begin

    > Postmessage( TDbgrid(Sender).Handle,WM_keyDown,VK_TAB,0) ;

    > end

    > else if (key = #13) Then

    > begin

    > SelectNext(Activecontrol as Twincontrol,True,True) ;

    > Key := #0 ;

    > end ;

    >

    >