TWebBrowser et onglets dynamiques
Salut tout le monde,
Je voudrais recréer une sorte de mini navigateur façon Firefox en bien plus modeste ave cle système des onglets. En ce qui concerne ces derniers, je n'ai aucun problème : je les crée/rajoute et les retire de façon totalement dynamique sans aucun soucis. Par contre je ne sais pas comment m'y prendre pour intégrer dans chaque onglet crée dynamiquement (je dispose d'un tableau de TTabSheet) un TWebBrowser. Dois-je utiliser un tableau de TWebBrowser ? Si oui comment faire pour les afficher après ?
Voici ce que j'ai fait pour l'instant histoire de situer les choses :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
unit test_TabBrowser;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw, XPMan;
type
TForm1 = class(TForm)
pcNavigator: TPageControl;
btAdd: TButton;
btRemove: TButton;
XPManifest1: TXPManifest;
procedure btAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btRemoveClick(Sender: TObject);
private
{ Déclarations privées }
FTabSheets : Array of TTabSheet;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Setlength(FTabSheets, 0);
end;
procedure TForm1.btAddClick(Sender: TObject);
var len : Integer;
begin
len := Length(FTabSheets);
SetLength(FTabSheets, len + 1);
FTabSheets[len] := TTabSheet.Create(pcNavigator);
FTabSheets[len].Name := 'ts' + IntToStr(len);
FTabSheets[len].Caption := FTabSheets[len].Name;
FTabSheets[len].PageControl := pcNavigator;
pcNavigator.ActivePageIndex := pcNavigator.PageCount - 1;
end;
procedure TForm1.btRemoveClick(Sender: TObject);
var
del : TTabSheet;
i, len, cur : Integer;
begin
len := Length(FTabSheets);
if len > 0 then begin
if ((pcNavigator.ActivePageIndex = pcNavigator.PageCount - 1) and (len > 1)) then
pcNavigator.ActivePageIndex := pcNavigator.PageCount - 2;
cur := pcNavigator.ActivePageIndex;
del := FTabSheets[cur];
del.PageControl := nil;
del.Free;
for i := cur to len - 2 do begin
FTabSheets[i + 1].name := 'ts' + IntToStr(i);
FTabSheets[i] := FTabSheets[i + 1];
end;
SetLength(FTabSheets, len - 1);
end;
end;
end. |
Merci d'avance.