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

C++Builder Discussion :

Cherche à ajouter un TCppWebBrowser pendant l'execution d'un programme [FAQ]


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 32
    Points : 26
    Points
    26
    Par défaut Cherche à ajouter un TCppWebBrowser pendant l'execution d'un programme
    Bonjour à tous,

    Je voudrais ajouter sur ma fiche des composants TCppWebBrowser au fur et à mesure de l'exécution de mon programme, mais je n'ai pas trouvé la bonne syntaxe.
    J'ai essayé avec des lignes comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TCppWebBrowser *CppWebBrowser1;
    CppWebBrowser1 = new TCppWebBrowser(Form1);
    CppWebBrowser1->Show();
    Mais ça ne m'affiche rien du tout.

    Est-ce que quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Le truc important dans la création de composant c'est la désignation du parent. Si ton composant n'en a pas, il ne s'affichera pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TCppWebBrowser *CppWebBrowser1;
    CppWebBrowser1 = new TCppWebBrowser(Form1);
    CppWebBrowser1->Parent = this;
    Comme ca, tu lies ton composant à ton application.
    Avec ça, ça devrait marcher je pense.

  3. #3
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    C'est un composant très particulier, cette syntaxe ne marche pas, on a l'erreur suivante :

    [C++ Erreur] Unit1.cpp(28): E2034 Impossible de convertir 'TForm1 * const' en '_di_IDispatch'

    Ça marche très bien en déposant le composant sur la forme mais je ne sais pas ce qu'il faut faire pour que ça marche en création dynamique.

    À bientôt
    Gilles

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Effectivement ça me donne l'erreur là !

    Bon ça marche avec un TEdit mais pas avec un TCppWebBrowser, est-ce que quelqu'un saurait pourquoi ?

  5. #5
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 202
    Points
    8 202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       TCppWebBrowser *CppWebBrowser1;
       CppWebBrowser1 = new TCppWebBrowser(Form1);
       CppWebBrowser1->ParentWindow = Handle;
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  6. #6
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 32
    Points : 26
    Points
    26
    Par défaut


    Merci beaucoup ! Ca marche nickel !

    Bonne journée à vous tous

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Bravo CGi, ce serait peut-être à rajouter dans la FAQ (si ce n'est déjà fait), ça me paraît être une information précieuse.

    Pour ceux qui veulent savoir l'heure, mettez un bouton sur la forme et sur son événement OnClick, écrivez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TCppWebBrowser* CppWB;
    WideString WEB="http://www.horlogeparlante.com/";
     
    CppWB = new TCppWebBrowser(Form1);
    CppWB->ParentWindow = Handle;
    CppWB->Navigate(WEB);
    
    À bientôt
    Gilles

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut et pour un TPanel?
    Salut à tous!
    la technique du Handle marche nickel si on met le TCppWebBrowser sur un TForm mais si on le met comment on le met sur un TPanel???

    Par exemple,
    dans mon code, je supprime et recrée plusieurs composents pour vider la mémoire vive qu'ils occupent (je connais pas d'autre technique...):

    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
     
      //Delete WebBrowser  
      delete WebBrowser;
      WebBrowser = new TCppWebBrowser(this);
      WebBrowser->ParentWindow = WebBrowserPanel;  //ne fonctionne pas
     
      //Delete Memos
      delete PreFilterMemo;
      PreFilterMemo = new TMemo(this);
      PreFilterMemo->Parent = FilterForm;
     
      delete PostFilterMemo;
      PostFilterMemo = new TMemo(this);
      PostFilterMemo->Parent = FilterForm;
     
      ...
    Une idée?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut RE
    Tu peux essayer le code suivant :

    //Delete WebBrowser
    delete WebBrowser;
    WebBrowser = new TCppWebBrowser(this);
    WebBrowser->ParentWindow = WebBrowserPanel->Handle;

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Re
    Après qq tests et pour que ça marche mieux il faut faire :

    WebBrowser = new TCppWebBrowser( MyPanel ) ;
    WebBrowser->TOleControl :: Parent = MyPanel ;
    WebBrowser->Align = alClient ;

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 81
    Points
    81
    Par défaut
    Salut bobtheque,

    Puisque tu as l'air à fond dans le composant TCppWebBrowser, connais-tu une méthode pour supprimer les barres de défilement du document?
    J'ai essayé le code suivant dans les FAQ, qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Variant vDocument = Browser->ControlInterface->Document;
    if (((IDispatch *)vDocument) != NULL)
    {
       Variant vBody = vDocument.OlePropertyGet("Body");
       Variant vStyle = vBody.OlePropertyGet("Style");
     
       // Pour cacher les barres de défilement
       vStyle.OlePropertySet("OverflowX","hidden");
       vStyle.OlePropertySet("OverflowY","hidden");
    }

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut engrobel
    Le code de la FAQ fonctionne parfaitement chez moi sur le composant WebBrowser pose directement sur la Form, dans ton cas ton composant est, si j'ai bien compris sur un TPanel et cree dynamiquement, je pense que tu a un probleme de Handle
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Points : 24
    Points
    24
    Par défaut effacer les barres de défilement dans webbrowser
    bonjour, j'utilise le code donné sur le forum pour cacher les barres de défilement sur mon webbroser.
    sur certaines pages, elles s'effacent (je traite le le message WebBrowser1DocumentComplete ) sur d'autres non .
    quelqu'un sait-il pourquoi et connait-il une solution?
    merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/11/2011, 21h19
  2. Réponses: 0
    Dernier message: 11/02/2010, 16h39
  3. Réponses: 2
    Dernier message: 28/05/2007, 23h24
  4. Rendre une interface inactive pendant l'exécution d'un programme
    Par ploukinet dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 21/05/2007, 16h25
  5. ADOQUERY : Ajouter un champ pendant l'excecution d'un programme
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2007, 13h18

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