德尔福击中进入

时间:2011-03-16 18:24:12

标签: delphi enter twebbrowser onkeydown

如何制作一个编辑框,以便当我按住Enter键并且光标仍在其中时。然后它进入编辑框中的webbrowser中的那个网站?

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:16)

您应该使用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; 

答案 1 :(得分:6)

在表单上删除TEditTWebBrowser,并为编辑控件编写一个事件处理程序,即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;

更新

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

ShellExecute(0, nil, PChar(Edit1.Text), nil, nil, SW_SHOWNORMAL);
ShellAPI添加到uses子句后

。但是现在注意你明确协议。例如,bbc.co.uk不起作用,但http://bbc.co.uk会起作用。