Das liegt Wahrscheinlich dran, das Du nicht das OnKeyDown des Formulares genommen hast, zusätzlich KeyPreview auf True setzen.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = Ord('P') then
Button1.Click;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Wer hat da gedrückt?');
end;