dernière mise à jour le : jeudi 23 novembre 2000
Pour pouvoir importer l'ActiveX, il est bien sur indispensable qu'Internet Explorer soit présent sûr votre poste.


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) 3 nouveaux composants dont le composant WebBrowser


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.
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;
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;
Nous allons simuler les actions des boutons d'IE4
![]()
dans nos boutons
![]()
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;
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;
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.
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;
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
Consultez sur le site Web de Microsoft à : http://msdn.microsoft.com/workshop/browser/webbrowser/webbrowser.asp