2016-08-08 4 views
-1

Quand j'appelle WebBrowser1.Navigate('www.google.com'); d'un bouton événement OnClick, par exemple:Webrowser1 dans une procédure Delphi6

procedure TForm4.Button1Click(Sender:TObject); 
begin 
    WebBrowser1.Navigate('www.google.com'); 
end; 

La page Web apparaît dans WebBrowswer1.

Mais, si je fais ma propre procédure, par exemple:

procedure MyProcedure; 
var 
    WebBrowser1:TWebBrowser; 
begin 
    WebBrowser1.Navigate('www.google.com'); 
end; 

Et puis essayez d'appeler cette procédure à partir d'un événement Bouton OnClick, je reçois une erreur de violation d'accès.

Je me demandais juste pourquoi cela fonctionne quand Delphi fait la procédure pour moi, mais ça ne marche pas quand j'écris la procédure moi-même? Comment puis-je corriger cela, ou quel code dois-je écrire dans la procédure pour le faire fonctionner?

+0

Merci Remy Lebeau. –

Répondre

1

Dans le premier extrait, vous avez ajouté un contrôle TWebBrowser au formulaire dans le concepteur IDE. En tant que tel, le cadre VCL instancie le contrôle pour vous. Faites-en un contrôle enfant du formulaire et appliquez toutes les étapes nécessaires pour que le contrôle fonctionne correctement.

Dans le second extrait, il n'y a aucune forme, aucun contrôle ajouté dans le concepteur. Vous déclarez une variable locale WebBrowser1, que vous n'initialisez pas. Aucun contrôle de navigateur n'est créé et toute tentative d'utilisation de la variable non initialisée WebBrowser1 entraîne un comportement indéfini. Une erreur d'exécution est à peu près inévitable.

Si vous voulez corriger cela, vous devez instancier une instance du contrôle TWebBrowser, définir son parent de manière appropriée et prendre toutes les autres mesures que la VCL fait pour vous.