B라는 컴포넌트에서 Focused일대 VK_RETURN이면 어떤 작업을 하게 했는데
이전 컴포넌트(A)에서 엔터를 치면 다음으로 포커스로(B) 이동시켰는데
이때 enter가 실행되면서 원하지 안던일이 발생합니다.
B에서 포커스이동시 엔터는 삭제하고 그 이후부터 엔터가 먹어야 하는데 방법좀 알려 주세요.
이전 콤포넌트는 어떤게 올지 몰라서 KeyDown, KeyPress (#0)에서는 처리할 수 없습니다.
B라는 컴포넌트는 Application.OnMessage을 이용했는데 디버거를 잡으면 Enter가 안먹고
실행시는 먹습니다. 방법좀 알려 주시면 감사 하겠습니다.
procedure TPsRealGrid.CMEnter(var Message: TCMEnter);
begin
여기서 들어온 Message에 Enter값을 삭제하면 될것 같은데.. 삭제방법을 모르겠습니다...
end;
메소드형태로 보아 CM_Enter를 처리하는 메세지 핸들러 같은데...
맞다면 Message.Result := 0; 하시면 될겁니다.
헛.. 그런데 질문을 자세히 보니까.... ㅠㅠ
CMEnter에 대해서 잘못 이해를 하신것같네요...
이것 뿐만 아니라 대부분의 컴포넌트에 OnEnter이벤트가 있는데...
이게 Enter가 눌렀을때 발생하는게 아니라 포커스가 들어왔을때 발생하는 것입니다.
반대로 포커스가 나갈때는 CMExit, OnExit가 발생하구요...
^^ 항상 즐코하세요...