2011-03-16 52 views
1

我該如何編輯一個編輯框,以便當我用光標仍然輸入時進入。然後它進入編輯框中的網頁瀏覽器中的那個網站?德爾菲擊中輸入

任何人都可以幫助我嗎?

+0

多少編程知識,你有那麼遠嗎? – 2011-03-16 18:26:29

+0

什麼網頁瀏覽器?您表單中的TWebBrowser組件,還是僅使用系統瀏覽器? – 2011-03-16 18:44:00

回答

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; 

更新

如果您希望URL在系統的默認瀏覽器中打開,而不是在TWebBrowser表單上,與

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

取代WebBrowser1.Navigate(Edit1.Text)已添加ShellAPI到您的使用條款後。但是現在請注意,您的對協議是明確的。例如,bbc.co.uk將不起作用,但http://bbc.co.uk將會。

12

,您應該使用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; 
+0

+1「應該」是一個很強的詞,但肯定 - 這將刪除嘟嘟聲(如果您刪除語法錯誤,以便代碼編譯!)。 – 2011-03-16 19:46:49

+0

好的,我爲你做到了! – 2011-03-16 23:11:54

+0

嘿,你會不會解釋爲什麼應該使用OnKeyPress而不是OnKeyDown? – DBedrenko 2016-03-03 12:33:11