C++ Builder Snippets  

TCppWebBrowser: HTML-Code aus einem Stream laden:

Frei nach dem Beispiel von Pit aus dem Forum der RAD-Seiten:
//---------------------------------------------------------------------------
// Funktion LoadHtmlFromStream() lädt den HTML-Code aus dem MemoryStream
// direkt in den TCppWebBrowser-Steuerelement.
//---------------------------------------------------------------------------
// Übergabeparameter:
//
// TCppWebBrowser* pCppWebBrowser -> Zeiger auf die zu verwendende
//                                   TCppWebBrowser-Komponente
// TMemoryStream* pMemStream      -> Stream mit dem HTML-Code
//---------------------------------------------------------------------------
void LoadHtmlFromStream(TCppWebBrowser* pCppWebBrowser,
  TMemoryStream* pMemStream)
{
  if(pMemStream && pCppWebBrowser)
  {
    IPersistStreamInit* pPSI;
    pMemStream->Seek(0, 0);
    if(!pCppWebBrowser->Document)
    {
      pCppWebBrowser->Navigate(WideString("about:blank"));
      while(!pCppWebBrowser->Document)
        Application->ProcessMessages();
    }
    TStreamAdapter* pStreamAdapter = new TStreamAdapter(
      pMemStream, soReference);
    if(SUCCEEDED(pCppWebBrowser->Document->QueryInterface(
      IID_IPersistStreamInit, (LPVOID*)&pPSI)))
    pPSI->Load(*pStreamAdapter);
  }
}

//---------------------------------------------------------------------------
// Anwendungsbeispiel (Eventhandler für das OnKlick-Ereignis des Buttons
// "Html-Code aus der Memo im TCppWebBrowser-Steuerelement anzeigen")
//---------------------------------------------------------------------------
void __fastcall TfrmMain::BtnLoadCodeClick(TObject *Sender)
{
  // MemoHtmlSource => TMemo mit dem Quellcode

  // TMemoryStream-Instanz erzeugen:
  TMemoryStream* pStream = new TMemoryStream();
  // Html-Code aus der Memo in den Stream schreiben:
  MemoHtmlSource->Lines->SaveToStream(pStream);
  // Html-Code im TCppWebBrowser anzeigen:
  LoadHtmlFromStream(CppWebBrowser, pStream);
  // Aufräumen:
  if(pStream) delete pStream;
}
//---------------------------------------------------------------------------

© '99-2001 by S. Kreutzmann