How can I handle arrow keys in a custom component in delphi?

custom-controls, delphi, delphi-xe, keyboard, windows

Solution

This is easy. Just respond to the `WM_GETDLGCODE` message and return

Message.Result := Message.Result or DLGC_WANTCHARS or
                                     DLGC_WANTARROWS or DLGC_WANTTAB or
                                     DLGC_WANTALLKEYS;

Problem

I'm using delphi XE. I'm developing a component that is come from TPanel. `TApGUITab=class(Tpanel)` I handled key down event by handling WMKeyDown message, but it isn't called when I press arrow keys and it sets focus to another control instead of calling the event. What should I do now?

Original source