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

Composants VCL Delphi Discussion :

[TWebBrowser] Comment ajouter du texte ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut [TWebBrowser] Comment ajouter du texte ?
    Voila, je pose le décor, j'ai un composant TWebVrowser dans mon application. J'ouvre une page vierge qui est sur mon disque. Je voulais savoir si il existait une méthode afin d'ajouter du texte à l'intètieur de cette page (comme dans un TMemo) sans avoir besoin d'appeler la méthode de raffraichissement?

  2. #2
    Membre actif Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Points : 296
    Points
    296
    Par défaut
    Tiens c'est marrant, tu n'as plus faim, tu ne veux plus de BigMac et autres cochonneries ?

    Cela dit, puisque je suis grand prince, je vais te donner mon avis sur ta question.

    Etant donné que le TWebBrowser est en fait un navigateur, cela me parait peu probable que l'on puisse rajouter une ligne dans la page qu'il affiche via une méthode proposé par ce composant. Il y a cependant plusieurs solutions pour faire ce que veux :
    - soit comme tu le sous-entends, tu modifies la page (le fichier) qu'il affiche et tu raffraichis
    - soit tu utilises un composant d'édition HTML. Il en existe plusieurs si je ne m'abuse, MS proposant même un active X. Voici ce que j'ai trouvé dans un fameux moteur de recherche pour développeur :

    Mais
    puisque je suis très gentil : msHTML ! C un composant de IE, un cadeau de MS
    ! Pour le mettre en place il suffit de l'importer (Composant/Importer un
    ActiveX/ et tu choisis DHTML Edit for IE5).
    Tu trouveras de plus amples infos sur le site :
    http://members.shaw.ca/iedelphi/dhtmledit.htm
    Jean-Baptiste, vieux membre éclairé à la bougie
    -----
    www.e-jbb.net : Écriture et lecture numérique
    ---
    Citation du moment : "On abdique pas l'honneur d'être une cible" - Cyrano De Bergerac

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Désolé j'ai aps encore eu le temps de regarder exactement comment cela fonctionne, mais ca doit pouvoir me servir, je te remercie ...

  4. #4
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    salut,

    petite précision :il est possible d'utiliser le webbrowser comme un traitement de texte, sans prb..
    Un exemple: L'éditeur de Outlook Express ( composition des nouveaux mails ) utilise un Webbrowser.

    Il est donc tt à fait possible de rajouter une ligne, de modifier les lignes existantes, de modifier les balises HTML ou de les analyser, de changer les couleurs... Bref, quasiment tout 8)

    Jetez un coup d'oeil à la Faq de ce site, rubrique Delphi : il y a qq exemples pour le Webbrowser.

    La liste des fonctions disponibles avec le Webbrowser ? et Hop :
    http://msdn.microsoft.com/library/de.../document2.asp

    Bon courage ;-)
    ;-) phenix

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    pour utiliser IHTMLDocument2 il faut installer l'activx msHTML non? Sinon on n'y a pas accès je crois

  6. #6
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    oui,il faut importer la librairie :

    Composant-> Importer un controle Active X-> Microsoft HTML Object Library....

    A noter qu'on peut utiliser au choix, soit le MSHTML ( Webbrowser ), soit le DHTML ( DHTMLEdit ) pour editer ou modifier une page Web.

    Les deux sont similaires, avec qq petites différences...Les méthodes et fonctions sont généralement communes aux deux,il faut juste parfois adapter le code.

    Je previens aussi les utilisateurs de DHTML :

    Il y a un leger soucis avec les pack office ( 2000 / XP / 2003 ), tout programme qui utilise un DHTML sera peut-etre confronté au lancement de windows installer, qui voudra absolument ré-installer SON DHTML du Cd du pack office.
    Autant dire que ca bug à mort, et c'est un euphémisme
    Merci msieur crosoft
    Il y a une solution, que j'utilise pour phenix, mais c'est surtout un paliatif.
    Si ca interesse qq, je posterais la soluce qq part.
    ;-) phenix

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Merci de ce conseil ca me servir =),
    par contre j'ai poster un autre messaege la :
    http://www.developpez.net/forums/viewtopic.php?t=217676
    tu n'aurai pas une idée? =)

  8. #8
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    Mmh, perso je n'ai jamais developpé de dll, je comptais m'y mettre cet été..donc mon aide à ce sujet risque d'etre limité.

    Ca plante à quel moment ? A la fermeture du prog , genre à la destruction du composant ? Tu insères une methode navigate, est-ce tu arrive à charger correctement une page HTML à la création ?
    ;-) phenix

  9. #9
    Membre actif Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Points : 296
    Points
    296
    Par défaut
    Autant pour moi en ce qui concerne le TWebBrowser ! J'aurai appris quelque chose...

    J'ai eu effectivement des problèmes avec le DHTML. Je me demandais si ca venait de moi.

    1000 excuses pour ma mauvaise réponse !
    Jean-Baptiste, vieux membre éclairé à la bougie
    -----
    www.e-jbb.net : Écriture et lecture numérique
    ---
    Citation du moment : "On abdique pas l'honneur d'être une cible" - Cyrano De Bergerac

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Il affiche bien le TweBBrowser dans la fenêtre et c'est juste après avoir fait le navigate qu'il plante, en fait dès qu'il est créé il plante, je me demande si ce n'ai aps un problème de gestion de mémoire avec le parent

  11. #11
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    ce que je ne comprends pas , c'est l'utilisation de mWnd et HWindow.

    normallement, si on effectue le code directement d'une form, on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HtmlTmp:=TWebbrowser.Create(form22);
    HtmlTmp.ParentWindow:=form22.Handle;
    Donc si je suis ton code, et si je suppose que HWindow correspond au Handle de la form, on aurait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ListObjectBrowser.Add(TWebBrowser.Create(FindControl(HWindow))); 
    TWinControl(ListObjectBrowser.Items[0]).ParentWindow:= HWindow;
    ?
    ;-) phenix

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    mWnd correspond au Handle de lafenêtre princpal (Form) donc l'Owner charger de la destruction du nouveau composant et HWindow la fenêtre Child (Cliente) qui va recevoir le TWebbrowser pour l'affichage.

  13. #13
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    a mon avis, il vaut mieux dans ce cas utiliser uniquement Hwindow, la fenetre child sera chargée de la destruction du composant.

    Ensuite, pourquoi le Tcomponent ? Marche très bien sans...

    Essaie déja avec un Hande de form classique ( pas child ) pour tester, ensuite si ca marche bascule sur une fenetre Child..

    personnellement, je n'utilise jamais le principe Child des forms directement...
    Je préfere utiliser des forms standards, et si besoin je passe la propriété parent à la form principale
    ;-) phenix

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Je testerai ca ce we, Bonne soirée à tous!

  15. #15
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut
    On peut faire ça : mettre comme adresse about:texte que tu veux rajouter.

    Taper ça dans votre barre d'adresse : about:bonjour, cela affichera bonjour.
    Avec ça aussi about:<h1>bonjour</h1> pareil sauf que le texte est grossi.

    Tu peux essayer comme ca bye

  16. #16
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Je ne comprend pas, j'ai tourner le code dans tous les sens et rien à y faire ca plante toujours. Le TWebBrowser se créé bien, il s'affiche dans la fenêtre. Ca commence à planter au navigate, il n'affiche que la partie information de l'exlorateur sur la droite sans le contenu et après petite fenêtre de bug:

    le code :

    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
     
    library Project1;
     
    uses
    //ShareMem, <= Peu ca qui plante?
      SysUtils,  Classes,  Windows,  ShDocVw,  OleCtrls,  Controls,  Contnrs;
    var
      ListObjectBrowser : TObjectList;
    {$R *.res}
     
    function hidewin(mWnd: HWND; aWnd: HWND; data: PChar; parms: PChar; show: Boolean; nopause: Boolean): Integer; stdcall;
    var
      HWindow: HWND;
      HEdit, HListBox, HStatic, HScrollBar : HWND;
      TRcList, TRcChan: TRect;
    begin
      ListObjectBrowser:= TObjectList.Create;
      HWindow:= StrToInt(data);
     
      HEdit:= FindWindowEx(Hwindow,0,'Edit',nil);
      HListBox:= FindWindowEx(Hwindow,0,'ListBox',nil);
      HStatic:= FindWindowEx(Hwindow,0,'Static',nil);
      HScrollBar:= FindWindowEx(Hwindow,0,'ScrollBar',nil);
     
      ShowWindow(HStatic,SW_HIDE);
     
      ListObjectBrowser.Add(TWebBrowser.Create(FindControl(Hwindow)));
      TWebBrowser(ListObjectBrowser.Items[0]).ParentWindow:= Hwindow;
     
     
      GetClientRect(HListBox, TRcList);
      GetClientRect(HStatic, TRcChan);
      Browser.SetBounds(-1, -1, TRcChan.right + TRcList.right + 5, TRcChan.bottom + 5);
      Browser.Navigate('c:\');
     
      StrCopy(data, 'S_OK');
      result:=3;
    end;
     
    exports hidewin;
     
    begin
    end.

  17. #17
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Personne pout m'aider ...

  18. #18
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    salut,

    Sisi je vais regarder ca plus en profondeur

    Mais c'etait le we, et là j'etais occupé à transposer mes fonctions DHMTL en MSHTML, donc un peu long et compliqué...

    Je suis donc open maintenant.

    question : tu utilises la variable Browser dans ton code, mais quand est-elle initialisée ? ca me semble un peu bizarre comme ca, normalement on devrait avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Browser:=TWebBrowser.Create(FindControl(Hwindow));
    Browser.ParentWindow:= Hwindow;
    ListObjectBrowser.Add(Browser); 
    Browser.SetBounds(-1, -1, TRcChan.right + TRcList.right + 5, TRcChan.bottom + 5); 
    Browser.Navigate('c:\');
    Ensuite, le fait d'utiliser navigate('c:\') empeche toute utilisation ultérieur de code, genre dans les evenements Beforenavigate etc...
    Donc si tu essaie de manipuler qq chose dans le Webbrowser après, il y a de grandes chances que ca plante ( genre Interface non supportée etc )
    Je te conseille donc en premier de faire un simple navigate, genre :
    Browser.navigate('c:\test.htm');
    ;-) phenix

  19. #19
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    C'est bon j'ai trouvé le problème, la dll se déchargeait automatiquement après l'appel de la fonction, ducoup mon TwebBrowser était détruit. Il fallait juste créer une fonction de chargement et de déchargement =)

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

Discussions similaires

  1. Comment ajouter un texte actif sur une image ?
    Par JEANAEJ dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 01/12/2012, 18h24
  2. Réponses: 2
    Dernier message: 13/11/2009, 15h35
  3. [Pied de page] Comment ajouter du texte ?
    Par soforever dans le forum Word
    Réponses: 2
    Dernier message: 23/05/2007, 17h30
  4. Réponses: 1
    Dernier message: 10/02/2007, 09h39
  5. [debutante]Comment Ajouter du texte dans un listbox
    Par @yoyo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/01/2007, 10h28

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