Results 1 to 11 of 11

Thread: HTML maken

  1. #1
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621

    HTML maken

    Dag allemaal,

    Bij het maken van mijn e-mailapplicatie ben ik (weer) tegen een klein probleempje aangelopen.

    Het gaat om het weergeven van ontvangen HTML-berichten.
    Ik geloof dat het mogelijk is om de msg.Body naar een TWebBrowser te sturen, maar ik weet niet hoe.
    Dit lijkt mij in ieder geval wel de beste manier om het HTML-bericht te weergeven, hoewel ik andere suggesties natuurlijk op prijs stel (ik heb htmlLite geprobeerd maar dat werkte niet).
    Een klein (relevant ) codevoorbeeld zou mij erg dankbaar maken.

    Bij voorbaat veel dank,

    CompuChip
    My software never contains bugs. Perhaps just undocumented features.

  2. #2
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    Wat werkte er niet aan HtmlLite? je zou toch de html-data kunnen opslaan in een .html bestand en die door de HtmlLite laten openen
    !

  3. #3
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Ik zou idd een html-bestand kunnen maken, maar dat lijkt me vrij omslachtig.
    Voor elke e-mail die bekeken moet worden moet ik dan eerst een html-bestand schrijven, laden en vervolgens weer verwijderen terwijl ik deze in een variabele klaar heb staan.
    Het liefste heb ik dus een componentje dat ik een (T)String(List) voer en waar goede weergave uit komt rollen.
    My software never contains bugs. Perhaps just undocumented features.

  4. #4
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    ik denk toch dat het niet zoveel uit zal maken.. natuurlijk heb je de door jouw genoemde overhead dat je het eerst op de hdd moet zetten en dan weer uit moet lezen, maar ik denk dat dit een goede tijdelijke oplossing is
    !

  5. #5
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Een TStringList aan HTMLLite voeren is makkelijker dan aan TWebBrowser, om de simpele reden dat HTMLLite functies heeft als LoadFromStream/LoadFromString/LoadFromStrings (met name die laatste is interessant in jouw geval). TWebBrowser en laden uit het geheugen/een string is lastiger, maar mocht je toch voor deze oplossing willen gaan: EmbeddedWB heeft ook een LoadFromStrings die ook dat probleem verhelpt
    Qui custodiet ipsos custodes

  6. #6
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Bedankt PsychoMark,

    HTMLLite werkt niet omdat het geen print-functie ondersteunt, en het zou fijn zijn om een mailtje te printen.
    Maar ik ga nu dat EmbeddedWB uitproberen. Anders moet ik toch maar met bestandjes gaan werken...
    My software never contains bugs. Perhaps just undocumented features.

  7. #7
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,160
    Als je er nou niet uitkomt, geef je maar een gil, want _zo_ moeilijk is het nou ook weer niet om een document in webbrowser te krijgen zonder bestand.

    (Wij delphi programmeurs zijn helaas allemaal fervente onwetenden op het gebied van de interfaces van MS)

  8. #8
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Het is gelukt hoor. Voor het geval iemand hierin geinteresseerd is, post ik hierbij de gebruikte code, misschien (lees: zeer waarschijnlijk) zien jullie fervente experts nog enkele verbeteringen.

    Code:
    procedure TInspect.FormShow(Sender: TObject);
    var
     f : TextFile;
    begin
     Caption := Source.tblReceived.FieldByName('Subject').AsString;
     qryAttachments.SQL.Text := 'SELECT Filename FROM Attachments WHERE MessageID = ''' +
      MessageID.Text + ''';';
     qryAttachments.Active := True;
     AssignFile(f, 'msg.html');
     ReWrite(f);
     Write(f, '<TABLE WIDTH="100%" BORDER=1><TR><TD>');
     Write(f, '<TABLE WIDTH="100%" BORDER=0 BGCOLOR="silver">');
     Write(f, '<TR><TD WIDTH=100><B>MessageID:</B></TD> <TD>' + MessageID.Text + '</TD></TR>');
     Write(f, '<TR><TD WIDTH=100><B>Date:</B></TD> <TD>' +      msgDate.Text + '</TD></TR>');
     Write(f, '<TR><TD WIDTH=100><B>From:</B></TD> <TD>' +      From.Text + '</TD></TR>');
     Write(f, '<TR><TD WIDTH=100><B>To:</B></TD> <TD>' +        
        Source.tblAccounts.FieldByName('DisplayName').AsString + '</TD></TR>');
     if Length(CC.Text) > 1 then
      Write(f, '<TR><TD WIDTH=100><B>CC:</B></TD> <TD>' +       CC.Text + '</TD></TR>');
     if Length(CC.Text) > 1 then
      Write(f, '<TR><TD WIDTH=100><B>BCC:</B></TD> <TD>' +      msgBCC.Text + '</TD></TR>');
     Write(f, '<TR><TD WIDTH=100><B>Subject:</B></TD> <TD>' +   theSubject.Text + '</TD></TR>');
     Write(f, '</TABLE>');
     Write(f, '</TD></TR></TABLE>');
    
     if Pos('<!DOCTYPE', Message.Text) = 0 then
      Write(f, '<PRE><FONT FACE="Times New Roman">');
     Write(f, Message.Text);
     if Pos('<!DOCTYPE', Message.Text) = 0 then
      Write(f, '</FONT></PRE>');
     CloseFile(f);
     htmlMessage.Navigate(ExtractFilePath(Application.ExeName) + '/msg.html');
     while not (htmlMessage.ReadyState = READYSTATE_COMPLETE) do 
            Application.ProcessMessages;
     DeleteFile('msg.html');
    end;
    Edit: Enkele (te) lange regels verdeeld over twee regels
    My software never contains bugs. Perhaps just undocumented features.

  9. #9
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    een klein beetje miereneuken () maar zo is het wat mooier:

    Code:
    var
     F : TextFile;
    begin
     Caption := Source.tblReceived.FieldByName('Subject').AsString;
     qryAttachments.SQL.Text := 'SELECT Filename FROM Attachments WHERE MessageID = ''' +
      MessageID.Text + ''';';
     qryAttachments.Active := True;
     AssignFile(f, 'msg.html');
     ReWrite(f);
     Try
    Write(f, '<TABLE WIDTH="100%" BORDER=1><TR><TD>');
       Write(f, '<TABLE WIDTH="100%" BORDER=0 BGCOLOR="silver">');
       Write(f, '<TR><TD WIDTH=100><B>MessageID:</B></TD> <TD>' + MessageID.Text + '</TD></TR>');
       Write(f, '<TR><TD WIDTH=100><B>Date:</B></TD> <TD>' +      msgDate.Text + '</TD></TR>');
       Write(f, '<TR><TD WIDTH=100><B>From:</B></TD> <TD>' +      From.Text + '</TD></TR>');
       Write(f, '<TR><TD WIDTH=100><B>To:</B></TD> <TD>' +
          Source.tblAccounts.FieldByName('DisplayName').AsString + '</TD></TR>');
       if Length(CC.Text) > 1then
    Write(f, '<TR><TD WIDTH=100><B>CC:</B></TD> <TD>' +       CC.Text + '</TD></TR>');
       if Length(CC.Text) > 1then
    Write(f, '<TR><TD WIDTH=100><B>BCC:</B></TD> <TD>' +      msgBCC.Text + '</TD></TR>');
       Write(f, '<TR><TD WIDTH=100><B>Subject:</B></TD> <TD>' +   theSubject.Text + '</TD></TR>');
       Write(f, '</TABLE>');
       Write(f, '</TD></TR></TABLE>');
    
       if Pos('<!DOCTYPE', Message.Text) = 0then
    Begin
    Write(f, '<PRE><FONT FACE="Times New Roman">');
           Write(f, Message.Text);
           Write(f, '</FONT></PRE>');
         End;
     Finally
       CloseFile( F );
     End;
     Try
       htmlMessage.Navigate(ExtractFilePath(Application.ExeName) + '/msg.html');
       whilenot (htmlMessage.ReadyState = READYSTATE_COMPLETE) do
         Application.ProcessMessages;
     Finally
       DeleteFile('msg.html');
     End;
    end;
    !

  10. #10
    Je kan een TWebBrowser ook vullen vanuit het geheugen.
    Code:
    procedure LoadHtml(Html : String);
    var
       V, vDocument, vMIMEType, vHTML: OleVariant;
    begin
      //Stop any actions - this is important!
      FWeb.Stop;
      // Grab the document
      V:= FWeb.document;
      // Now get the script's document (like a JavaScript document)
      vDocument:= V.script.document;
      // IE 4.0 only deals with text/html on a consistent basis
      vMIMEType:= 'text/html';
      // You can use any html content you want here
      vHTML:= Html;
      // Re-open the page for writing
      vDocument.Open(vMIMEType);
      // Clear the existing content (or not)
      vDocument.Clear;
      // Write our HTML
      vDocument.Write(vHTML);
      // Closing the document sends the page to the browser
      vDocument.Close;
    end;
    Bron: http://xml.defined.net/samples/delphi/webbrowser.html
    We adore chaos because we like to restore order - M.C. Escher

  11. #11
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Perfecto!
    Heel erg bedankt.
    My software never contains bugs. Perhaps just undocumented features.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. HTML Editor maken
    By Chris2112 in forum WebDelphi
    Replies: 4
    Last Post: 21-Mar-04, 11:21
  2. kun je html documenten opslaan in een database
    By swissis in forum Databases
    Replies: 11
    Last Post: 25-Jan-04, 18:38

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •