UTILISATION DE L'ACTIVEX D'INTERNET EXPLORER 4 (ou 5)

dernière mise à jour le : jeudi 23 novembre 2000

Retour au sommaire.


Importation de l'ActiveX (Transformation en composant WebBrowser)

Avec certaines versions de D5 (et +?), ce composant est déjà installé dans l'onglet internet. Passez alors directement au chapitre suivant.

Pour pouvoir importer l'ActiveX, il est bien sur indispensable qu'Internet Explorer soit présent sûr votre poste.

 

 

Utilisation du composant WebBrowser

 

fiche1.gif (27682 octets)

 

Affichage d'une page HTML

La procédure essentielle de TWebBrowser à connaître est la procédure Navigate. Elle permet d'afficher le contenu situé à une adresse URL. Ce contenu peut être une page HTML situé sur un serveur Web (http://...) mais également un fichier situé sur votre poste (par exemple, si Excel est installé sur votre poste, un fichier .xls pourra être affiché à l'intérieur de la fenêtre de votre application.
Le premier paramètre de la procédure Navigate est l' URL. Les autres paramètres sont "facultatifs" (d'où les EmptyParam)

procedure TForm1.ButtonValidationClick(Sender: TObject);
begin
  try WebBrowser1.Navigate(ComboBoxURL.Text,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    ComboBoxURL.Items.Add(ComboBoxURL.Text); // rajoute l'URL de la page dans les Items du ComboBox
  except end;
end;

Dès cet instant, votre application est opérationnelle. Lancez la, entrez une URL et cliquez sur le bouton Validation. La page correspondant à votre URL s'affiche.

 

Ne pas avoir besoin de cliquer sur "Validation" lorsque l'on fait "Entrée" sur le ComboBox

procedure TForm1.ComboBoxURLKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then // #13 = code de la touche Entrée
  begin
    ButtonValidationClick(Sender); // ainsi, la touche Entrée commande
                                  //le chargement de la page
    key:=#0; // pour éviter d'entendre un son
  end;
end;

 

Affichage du contenu d'un fichier situé sur votre poste

procedure TForm1.ButtonParcourirClick(Sender: TObject);
begin
  if Opendialog1.Execute then 
  begin
    ComboBoxURL.Text:='file://'+OpenDialog1.FileName;
    ButtonValidationClick(Sender);//affichage du contenu du fichier
  end;
end;

 

Simulation des boutons d'Internet Explorer :

Nous allons simuler les actions des boutons d'IE4

boutonsie4.gif (3373 octets)

dans nos boutons

boutons1.gif (1792 octets)

Pour cela, implémentez l'évènement OnClick de chaque bouton :

procedure TForm1.ButtonPrecedentClick(Sender: TObject);
begin
  try WebBrowser1.GoBack except end; //affiche la page précédente
end;

procedure TForm1.ButtonSuivantClick(Sender: TObject);
begin
  try WebBrowser1.GoForward except end; //affiche la page suivante
end;

procedure TForm1.ButtonArreterClick(Sender: TObject);
begin
  try WebBrowser1.Stop except end; //Stoppe le chargement de la page
end;

procedure TForm1.ButtonActualiserClick(Sender: TObject);
begin
 try WebBrowser1.Refresh except end; // Recharge la page
end;

procedure TForm1.ButtonDemarrageClick(Sender: TObject);
begin
  try WebBrowser1.GoHome except end; // affiche la page d'accueil
end;

procedure TForm1.ButtonRechercherClick(Sender: TObject);
begin
  try WebBrowser1.GoSearch except end; // pour faire une recherche sur le Web
end;

 

Amélioration de présentation. Utilisation des évènements OnBeforeNavigate2 et OnNavigateComplete2 du composant TWebBrowser

L'évènement OnBeforeNavigate2 est déclenché à chaque chargement de nouvelle page.
L'évènement OnNavigateComplete2 est déclenché à la fin de ce chargement.

Nous allons nous servir de ces évènements pour indiquer à l'utilisateur l'avancement des chargements. L'avancement sera affiché à l'aide du Label2.

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  Label2.Caption:=URL+ ' en cours de chargement';
  Label2.Update;
end;

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  Label2.Caption:=URL+ ' Chargé';
  Label2.Update;
end;

 

Impression de la page, enregistrer sous

procedure TForm1.ButtonImpressionClick(Sender: TObject);
var eQuery:variant;
begin
  try eQuery:=WebBrowser1.QueryStatusWB(OLECMDID_PRINT);
    If eQuery and OLECMDF_ENABLED then
       WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER,EmptyParam,EmptyParam)
      else Label2.caption:='impossible d''imprimer';
  except end;
end;
procedure TForm1.ButtonEnregistrerClick(Sender: TObject);
var eQuery:variant;
begin
  try eQuery:=WebBrowser1.QueryStatusWB(OLECMDID_SAVEAS);
    If eQuery and OLECMDF_ENABLED then
       WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_PROMPTUSER,EmptyParam,EmptyParam)
      else Label2.caption:='impossible de sauver';
  except end;
end;

Amélioration de présentation : Utilisation de l'évènement CommandStateChange

L'évènement CommandStateChange est appelé chaque fois qu'une "commande" change d'état. Par exemple, cet évènement sera déclenché lorsque l'on passe d'un état "il n'existe pas de page précédente" à un état "il existe une page précédente".

Le paramètre Command indique la "commande" concernée; le paramètre Enable son état.

procedure TForm1.WebBrowser1CommandStateChange(Sender: TObject;
  Command: Integer; Enable: WordBool);
begin
  // active ou désactive les boutons de changement de page en fonction de l'historique
  if Command=CSC_NAVIGATEFORWARD then ButtonSuivant.Enabled:=Enable;
  if Command=CSC_NAVIGATEBACK then ButtonPrecedent.Enabled:= Enable;
end;

 

Internet Explorer est aussi un serveur Automation

Ce sujet mériterait à lui seul un tutorial complet. Pour vous mettre l'eau à la bouche, je vous propose d'implémenter l'évènement OnClick du bouton OLE IE4 :

procedure TForm1.ButtonOLEIE4Click(Sender: TObject);
begin
  WebB:=CoInternetExplorer.Create;
  WebB.visible:=true;                   // rend visible IE4
  WebB.navigate(ComboBoxURL.text,EmptyParam,EmptyParam,EmptyParam,EmptyParam); // Chargement de la page
end;

La variable WebB est une variable globale que vous devez déclarer de type WebBrowser (var WebB : WebBrowser; ).

 

 

A ce stade, le source de votre projet doit ressembler à : Source

Pour tout renseignement complémentaire (pour connaître les fonctions disponibles ...) :

Consultez sur le site Web de Microsoft à : http://msdn.microsoft.com/workshop/browser/webbrowser/webbrowser.asp

 


 

Retour au sommaire.