3

編集ボックスを作成して、カーソルをその中に置いたままエンターを押すにはどうすればよいですか。次に、編集ボックスにあった Web ブラウザーでその Web サイトに移動しますか?

誰でも私を助けることができますか?

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

TEditaと 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);

ShellAPIuses 句に追加した後。ただし、プロトコルを明示的に指定する必要があることに注意してください。たとえば、bbc.co.uk 機能しませんが、機能しhttp://bbc.co.ukます。

于 2011-03-16T18:26:53.120 に答える