3

如何制作一个编辑框,以便当我在光标仍然在其中的情况下按 Enter 键时。然后它会转到编辑框中的网络浏览器中的那个网站?

谁能帮我?

4

2 回答 2

18

您应该使用OnKeyPress事件而不是OnKeyDown事件:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if ord(Key) = VK_RETURN then
  begin
    Key := #0; // prevent beeping
    WebBrowser1.Navigate(Edit1.Text);
  end;
end; 
于 2011-03-16T19:03:49.683 回答
6

TEdit将 a和 a拖放TWebBrowser到表单上,并将事件处理程序写入编辑控件,即OnKeyDown

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_RETURN:
      WebBrowser1.Navigate(Edit1.Text);
  end;
end;

为了让它稍微优雅一点,我建议

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_RETURN:
      begin
        WebBrowser1.Navigate(Edit1.Text);
        Edit1.SelectAll;
      end;
  end;
end;

更新

如果您希望 URL 在系统的默认浏览器中打开,而不是在TWebBrowser您的表单中打开,请替换WebBrowser1.Navigate(Edit1.Text)

ShellExecute(0, nil, PChar(Edit1.Text), nil, nil, SW_SHOWNORMAL);

在您添加ShellAPI到您的使用条款之后。但现在请注意,您必须明确使用协议。例如,bbc.co.uk 不会工作,但http://bbc.co.uk会。

于 2011-03-16T18:26:53.120 回答