Recherche
1 connecté

  Actuellement : 2 commentaires Utilisation de l'ActiveX d'internet Explorer 4

UTILISATION DE L'ACTIVEX D'INTERNET EXPLORER

dernière mise à jour le : dimanche 03 mars 2002

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.

  • Dans Delphi, faire Composant/ Importer un contrôle ActiveX

  • Sélectionnez Microsoft Internet Controls

 

  • Cliquez sur installer

  • Choisissez le paquet où vous souhaitez installer le contrôle ActiveX (ici, l'ActiveX sera installé dans un nouveau paquet nommé ActivexImport2.dpk et situé dans le dossier E:\Delphi\MesComposants).

  • Confirmer la construction (ou la reconstruction) du paquet. Delphi vous a installé dans la barre de composants (sous l'onglet ActiveX) trois (ou 2 selon les versions) nouveaux composants dont le composant WebBrowser

 

Utilisation du composant WebBrowser

  • Ouvrez un nouveau projet.
  • Placez un composant WebBrowser dans votre fiche.
  • Insérez également un ComboBox, nommez le ComboBoxURL.
  • Placez des boutons, un OpenDialog un label (URL sur la fiche) et un autre label (Label2 sur la fiche) de façon à obtenir une fiche ressemblant à l'image écran ci-dessous.
  • Renommez votre bouton "Validation" en ButtonValidation.

 

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)

  • Implémentez l'évènement OnClick du bouton "Validation"
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

  • Implémentez l'évènement OnKeyPressed du 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

  • Implémentez l'évènement OnClick du bouton "Parcourir"
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;
  • Testez ...

 

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.

  • Implémentez l'évènement OnBeforeNavigate2 de notre WebBrowser1 :
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;
  • Implémentez l'évènement OnNavigateComplete2 de notre WebBrowser1 :

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

 

Impression de la page, enregistrer sous

  • Implémentez le bouton Impression :
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;
  • Si vous voulez implémenter la fonction enregistrer sous, ajoutez un bouton et, exactement sur le même schéma que pour l'impression :
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.

  • Mettez la propriété Enabled de vos boutons Suivant et Précédent à False

  • Implémentez l'évènement CommandStateChange :

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;

Pour aller plus loin :

Voir les sources HTML de la page affichée (avec ou sans balises HTML)

  • Ajoutez deux boutons et placez des RichEdit dans 2 nouvelles "Form".

  • Implémentez les événements OnClick de nos boutons :

procedure TForm1.Button1Click(Sender: TObject);
// permet d'afficher la source HTML
begin
  Form2.show;
  try
    Form2.RichEdit1.Text := WebBrowser1.OleObject.Document.body.innerHTML; 
  except end;
end;

procedure TForm1.Button2Click(Sender: TObject);
// permet d'afficher sous forme de texte (sans les balise HTML)
begin
  Form3.show;
  try
    Form3.RichEdit1.Text := WebBrowser1.OleObject.Document.body.innerText;
  except end;
end;

 

Voir tous les liens inclus dans une page

  • Ajoutez un bouton

  • Implémentez l' événement OnClick de ce bouton :

procedure TForm1.Button4Click(Sender: TObject);
// voir tous les liens contenus dans la page
Var
  i : Integer;
begin
  Form2.show;
  try
    For i:=0 to Webbrowser1.OleObject.Document.links.length-1 Do
    Begin
      Form2.RichEdit1.lines.add(Webbrowser1.OleObject.Document.links.item(i));
    end;
  Except end;
end;

 

 

Afficher un string dans le TWebBrowser

  • Ajoutez un bouton

  • Implémentez l' événement OnClick de ce bouton :

procedure TForm1.Button3Click(Sender: TObject);
//afficher une chaine de caractères dans internet explorer
var
  CodeHTML : string;
begin
  CodeHTML := '<center><B><H>Hello Word !</H></B></center>';
  WebBrowser1.Navigate('about:' + CodeHTML, EmptyParam, 
            EmptyParam, EmptyParam, EmptyParam);
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.