想将按F1输入¢应该如何写?

解决方案 »

  1.   

    PS:必须是将KeyPress中的Key替换
      

  2.   

    OnKeyPress事件并不能截获控制键,所以这个事件办不到
      

  3.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=$70 then
        Edit1.Text:=Edit1.Text+'¢';end;
      

  4.   

    keyDown中,我知道了不截获控制键,按A输入也可以
      

  5.   

    procedure Sendkeys(focushld: HWND; sSend: string);
    var
      i:integer;
      ch: byte;
    begin
      i := 1;
      SendMessage(focushld, WM_IME_SELECT, WPARAM(true), 255);
      while i <= Length(sSend) do
      begin
        ch := byte(sSend[i]);
        if Windows.IsDBCSLeadByte(ch) then
        begin
          Inc(i);
          SendMessage(focushld, WM_IME_CHAR, MakeWord(byte(sSend[i]), ch), 0);
        end
        else
        SendMessage(focushld, WM_IME_CHAR, word(ch), 0);
      Inc(i);
      end;
    end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if key = 'a' then
      begin
        key :=  #0;
        Sendkeys(ActiveControl.Handle, '¢');
      end;
    end;
      

  6.   

    form1.KeyPreview:=true;
    //
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key = vk_f1  then
        Edit1.Text:=Edit1.Text+'¢';
    end;