箭头键不在组件中工作

use*_*395 3 delphi pascal custom-component

我使用Gecko SDK,这是一个允许您查看网页的组件.
我使用这个组件来创建一个html编辑器.

关闭编辑网页时会发生此问题.
问题是箭头键和选项卡不适用于我的组件.我试图找到这个问题的答案,但我找不到.我在这里找到了一个曲目,但功能不起作用.

功能Movement (dx, dy)不存在.谢谢你帮我解决这个问题.

Procedure Tform1.TraiteMessages(Var msg : TMsg; Var Handled: boolean);
var
  dx, dy : integer;
begin   dx: 0; dy := 0; 
  With msg do
  begin
    IF Message = WM_KEYDOWN then
    Case  wparam of
      VK_LEFT  : dx := -1;
      VK_RIGHT : dx :=  1;
      VK_UP    : dy := -1;
      VK_DOWN  : dy :=  1;
    end;
  end;
  IF (dy = 0) AND (Dx = 0) then Handled := false else
  begin
    handled := true;     // message traité
    Mouvement(dx, dy)    // exécution du tracé 
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Cos*_*und 8

将其添加到组件的类中:

procedure HandleDlgCode(var Msg:TMessage); message WM_GETDLGCODE;
Run Code Online (Sandbox Code Playgroud)

然后在实施部分:

procedure TComponentClass.HandleDlgCode(var Msg:TMessage);
var
  M: PMsg;
begin
  Msg.Result := DLGC_WANTALLKEYS or DLGC_WANTARROWS or DLGC_WANTCHARS or DLGC_HASSETSEL;
  if Msg.lParam <> 0 then
    begin
      M := PMsg(Msg.lParam);
      case M.message of
        WM_KEYDOWN, WM_KEYUP, WM_CHAR:
        begin
          Perform(M.message, M.wParam, M.lParam);
          Msg.Result := Msg.Result or DLGC_WANTMESSAGE;
        end;
      end;
    end
  else
    Msg.Result := Msg.Result or DLGC_WANTMESSAGE;
end;
Run Code Online (Sandbox Code Playgroud)

我只是从我自己的数字编辑器中复制粘贴此代码,因此它可以工作.