한 폼에 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 ;
> 한 폼에 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 ;