Salut à tous!

J'utilise un webbrowser dans une application pour naviguer sur un site web.

Le problème, c'est que je ne peux pas charger directement les pages du site, car celles-ci attendent obligatoirement que le document chargé ait au moins 2 frames!

Je me suis donc dit que j'allais charger dans mon WebBrowser un code html local, qui créer 2 frames, puis utiliser une fonction de navigation 'faite maison' qui me charge le lien dans une frame ciblée.

Exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
procedure TForm2.FormCreate(Sender: TObject);
var
  Flags, TargetFrameName, PostData, Headers: OleVariant;
  sHTML: String;
begin
  // Create frames into webbrowser
  sHTML := '<html><frameset cols="1%,99%"><frame src="" name="menu"><frame src="" name="main"></frameset></html>';
 
  form2.WB.Navigate('about:' + sHTML, Flags, TargetFrameName, PostData, Headers);
 
end;
Le code ci-dessus me créer bien deux frames dans mon composant WebBrowser.

Ensuite, je voulais faire ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
procedure TForm2.Button1Click(Sender: TObject);
var
  Flags, TargetFrameName, PostData, Headers: OleVariant;
  sHTML: String;
  test: integer;
begin
  TargetFrameName := 'main';
  Form2.WB.Navigate('c:\test.htm', Flags, TargetFrameName, PostData, Headers);
end;
Le problème c'est que l'appli me lance internet explorer au lieu de charger le fichier html dans la frame 'main' que j'ai créée dans l'événemment OnCreate

J'ai fouillé sur le net, mais je n'ai pas trouvé un seul exemple qui utilise le OleVariant TargetFrameName, alors un peu d'aide serait la bienvenue!