如何制作一个编辑框,以便当我按住Enter键并且光标仍在其中时。然后它进入编辑框中的webbrowser中的那个网站?
任何人都可以帮助我吗?
答案 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)
在表单上删除TEdit
和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;
如果您希望在系统的默认浏览器中打开网址,而不是在表单上的TWebBrowser
中打开,请将WebBrowser1.Navigate(Edit1.Text)
替换为
ShellExecute(0, nil, PChar(Edit1.Text), nil, nil, SW_SHOWNORMAL);
将ShellAPI
添加到uses子句后。但是现在注意你有明确协议。例如,bbc.co.uk
不起作用,但http://bbc.co.uk
会起作用。