Delphi нажимает Enter - PullRequest
       16

Delphi нажимает Enter

3 голосов
/ 16 марта 2011

Как сделать окно редактирования таким образом, чтобы при нажатии вводить курсор оставался в нем. Затем он переходит на тот веб-сайт в веб-браузере, который был в окне редактирования?

Кто-нибудь может мне помочь?

Ответы [ 2 ]

16 голосов
/ 16 марта 2011

Вы должны использовать событие 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; 
6 голосов
/ 16 марта 2011

Удалите 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 в вашей форме, замените WebBrowser1.Navigate(Edit1.Text) на

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

после добавления ShellAPI к предложению использования. Но обратите внимание, что у вас есть , чтобы быть явным с протоколом. Например, bbc.co.uk не будет работать, но http://bbc.co.uk будет.

...