IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

TWebBrowser et onglets dynamiques


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    A force de recherches j'ai fini par trouver mon bonheur. Je mets la solution que j'ai trouvée pour ceux que ça intéresserait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    procedure TfmMain.btAddClick(Sender: TObject);
    begin
      AddTabSheet();
    end;
    
    procedure TfmMain.AddTabSheet(url : String = '');
    var
      len : Integer;
      wb : TWebBrowser;
    begin
      len := Length(FTabSheets);
      SetLength(FTabSheets, len + 1);
      FTabSheets[len] := TTabSheet.Create(pcNavigator);
      FTabSheets[len].Name := 'ts' + IntToStr(pcNavigator.PageCount);
      FTabSheets[len].PageControl := pcNavigator;
      wb := TWebBrowser.Create(FTabSheets[len]);
      wb.Align := alClient;
      TWinControl(wb).Parent := FTabSheets[len];
      TControl(wb).Parent := FTabSheets[len];
      if url = '' then
        wb.Navigate(cbUrl.Items[cbUrl.ItemIndex])
      else
        wb.Navigate(url);
      pcNavigator.ActivePageIndex := pcNavigator.PageCount - 1;
    end;
    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion d'onglets dynamiquement
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 01/02/2007, 00h08
  2. Réponses: 2
    Dernier message: 14/07/2006, 14h24
  3. JTabbedPane avec onglets dynamique
    Par oOoOuuhmAn dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 18/03/2006, 16h23
  4. Onglet dynamique
    Par OjBarbare dans le forum MFC
    Réponses: 2
    Dernier message: 11/12/2005, 21h53
  5. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo