2011-03-16 2 views
1

Comment puis-je faire une boîte d'édition de sorte que lorsque je frappe, entrez avec le curseur toujours dedans. Puis il va à ce site Web dans le webbrowser qui était dans la boîte d'édition?Delphi Hitting Entrez

Quelqu'un peut-il m'aider?

+0

Comment beaucoup de connaissances de programmation avez-vous jusqu'à présent? –

+0

Quel webbrowser? Un composant TWebBrowser dans votre formulaire, ou simplement en utilisant le navigateur du système? –

Répondre

6

déposer une TEdit et un TWebBrowser sur la forme, et d'écrire un gestionnaire d'événements pour le contrôle d'édition, à savoir OnKeyDown:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; 
    Shift: TShiftState); 
begin 
    case Key of 
    VK_RETURN: 
     WebBrowser1.Navigate(Edit1.Text); 
    end; 
end; 

Pour je suggérer un peu plus chic, l'hôtel,

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; 

Mise à jour

Si vous préférez que l'URL s'ouvre dans le navigateur par défaut du système, et non dans un TWebBrowser sur votre formulaire, remplacez WebBrowser1.Navigate(Edit1.Text) avec

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

après avoir ajouté ShellAPI à votre clause uses. Mais notez maintenant que vous avez pour être explicite avec le protocole. Par exemple, bbc.co.uk ne fonctionnera pas, mais http://bbc.co.uk le fera.

12

Vous devez utiliser l'événement OnKeyPress au lieu de l'événement 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 "Doit" est un mot fort, mais sûr - cela supprimera le bip (si vous supprimez l'erreur de syntaxe pour que le code compile!). –

+0

OK, je l'ai fait pour vous! –

+0

Hey, voudriez-vous expliquer pourquoi 'OnKeyPress' devrait être utilisé plutôt que' OnKeyDown'? – DBedrenko