Skip to main content
Skip table of contents

TBeCbEmbeddedWebBrowser

TBeCbEmbeddedWebBrowser

Klasse zur Anzeige von Webseiten im Codeblock.
Diese Klasse verwendet zur Anzeige den lokalen Microsoft Internet Explorer.

ACHTUNG:
Version 10.X oder höher des Internet Explorer muss installiert sein.
Desweiteren muss be für die Verwendung des IE 10.X konfiguriert werden.
Dies hat auch zur Folge, dass die Anzeige von Webseiten/HTML-E-Mails in be, bei eingestellter Verwendung des IEs, nun auch die Version 11.X verwendet. Damit kann sich ggf. die Darstellung etwas verändern.
Für die Konfiguration von be für IE 11.X muss folgender Registry-Eintrag pro Client-Rechner eingetragen werden.

\[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\]

"be_32.exe"=dword:00002af9 (11001)

EigenschaftenBeschreibung

CbLocationURL:C

Url der aktuell angezeigten Seite

CbLocationName:C

Titel der aktuell angezeigten Seite


Funktionen und MethodenBeschreibung

CbHTMLSource:C

HTML Quelltext

CbNavigateToLocalFile

eine lokale Datei anzeigen

aFileName:C

Pfad der Datei

CbNavigateToSearch

Default Suchmaschine anzeigen

CbCopy:L

Markierten Text in Zwischenablage kopieren

CbSelectAll:L

Komplette Seite markieren

CbClearSelection:L

Markierung aufheben

CbNavigateTo

zu dieser Url navigieren

aURL:C

Url

CbStop

aktuelle Verarbeitung abbrechen

CbRefresh

Seite aktualisieren

CbGoBack

vorherige Seite anzeigen

CbGoForward

nächste Seite anzeigen

CbWaitWhileBusy:L

Warten bis der InternetExplorer wieder Eingaben empfangen kann

aTimeOut:N

Timeout in Millisekunden (0 => kein Timeout)

CbLoadFromString:L

Seite aus einem String laden

aString:C

HTML-Code der kompletten Seite

CbLoadFromFile:L

Seite aus einer Datei laden

aFileName:C

Pfad der Datei

CbSaveToFile:L

aktuelle Seite als Datei speichern

aFileName:C

Pfad der Datei

CbDocumentLoaded:L

Prüft ob die aktuelle Seite fertig geladen ist

CbScrollToBottom

ans Ende der Seite scrollen

CbScrollToID

zu dem Element mit der speziellen ID scrollen

aID:N

ID des Elements

CbScrollToIDEx

zu dem Element mit der speziellen ID scrollen

aID:C

ID des Elements

CbScrollToPosition

an eine bestimmte Position der Seite scrollen

aX:N

Anzahl an Pixel die die Seite nach links verschoben werden soll

aY:N

Anzahl an Pixel die die Seite nach oben verschoben werden soll

CbScrollToTop

an den Anfang der Seite scrollen


Verfügbare EventsBeschreibung

OnStatusTextChange

Status hat sich geändert
Hierbei wird z.b. angegeben welches Bild/Ressource gerade geladen wird oder auch
zu welcher Url der Link unter der Maus verweist

aSender:O

Browser welches den Event ausgelöst hat

Text:C

neuer Status-Text

OnProgressChange

Ladefortschritt

aSender:O

Browser welches den Event ausgelöst hat

Progress:N

aktueller Fortschritt

ProgressMax:N

max. Wert für den Fortschritt

OnCommandStateChange

Dient der Aktualisierung des Vor/Zurück Buttons

aSender:O

Browser welches den Event ausgelöst hat

Command:N

1 - vorwärts
2 - zurück

Enable:L

Funktion kann verwendet werden oder nicht

OnTitleChange

Der Titel der Seite hat sich geändert

aSender:O

Browser welches den Event ausgelöst hat

Text:C

neuer Titel der Seite

OnBeforeNavigate2

Bevor zu einer neuen Seite navigiert wird

aSender:O

Browser welches den Event ausgelöst hat

URL:C

Url zu welcher navigiert wird

Flags:N

siehe Microsoft NWMF enumeration

TargetFrameName:C

Name das Frames welcher zu dieser Seite navigieren möchte

PostData:C

HTTP Post Daten welche zusätzlich verschickt werden

Headers:C

HTTP Headers welche zusätzlich verschickt werden

Cancel:L

Navigation abbrechen
False (default)
True - die Navigation zu der Seite wird nicht durchgeführt, die aktuelle Seite wird weiterhin angezeigt

OnNavigateComplete2

Die Navigation zu einer Seite ist abgeschlossen (die Seite läd aber ggf. noch Inhalte)

aSender:O

Browser welches den Event ausgelöst hat

URL:C

Url welche geladen wurde

OnDocumentComplete

Die Seite ist komplett geladen

aSender:O

Browser welches den Event ausgelöst hat

URL:C

Url welche geladen wurde

OnNavigateError

Bei der Navigation ist ein Fehler aufgetreten

aSender:O

Browser welches den Event ausgelöst hat

URL:C

Url welche den Fehler verursacht hat

Frame:C

Name des Frames in welchem die Seite geladen wurde
Leer - falls die Anzeige nicht in einem Frame ist

StatusCode:N

HTTP Status Code

Cancel:L

Fehlerbehandlung abbrechen
False (default) - ggf. wird eine Fehler Seite wird angezeigt
True - keine Weiterleitung zur Fehler Seite

OnNewWindow3

Bevor ein neues Fenster angezeigt wird

aSender:O

Browser welches den Event ausgelöst hat

Cancel:L

Anzeige abbrechen
False (default)
True - es wird kein neues Fenster geöffnet, die Seite daher auch nicht angezeigt

dwFlags:N

siehe Microsoft NWMF enumeration

bstrUrlContext:C

Url der Seite welche das neue Fenster öffnen möchte

bstrUrl:C

Url der Seite welche in dem neuen Fenster geöffnet wird

Beispiel

CODE
//##############################################################################
//##############################################################################
// Beschreibung: Codeblock-Beispiel für die Klasse TBeCbEmbeddedWebBrowser
//##############################################################################
//##############################################################################

|oForm, oWebBrowser, oBtnBack, oBtnForward, oBtnRefreshStop, oBtnHome,
 oBtnSearch, oBtnNavigate, oEditNavigate,
 oPnl_Top, oPnl_TopLeft, oPnl_TopRight, oPnl_Bottom,
 oStatus, oProgress|

//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################

//******************************************************************************
// Panel initialisieren
// @Result: null
//******************************************************************************
function InitPanel(oPanel)
   oPanel.BevelInner := 0,
   oPanel.BevelOuter := 0,
end,

//******************************************************************************
// Navigation zu einer URL ausführen
// @Result: null
//******************************************************************************
function NavigateTo(cUrl)
   oWebBrowser.CbNavigateTo(cUrl),
   oEditNavigate.Text := cUrl,
end,

//******************************************************************************
// Start-Seite anzeigen
// @Result: null
//******************************************************************************
function LoadHomeScreen()
   |cHTML|

   cHTML :=
            '<html><head>' +
            '  <style type="text/css">' +
            '    a { text-decoration:none; color:#ffffff; font-family:Segoe UI }' +
            '  </style>' +
            '<body>' +
            '<table border="1" bordercolor="C70A2E" style="background-color:#CF5C4D" width="100%" cellpadding="5" cellspacing="0">' +
            '  <tr>' +
            '    <td><a href="http://www.dontenwill.de">Dontenwill AG</a></td>' +
            '  </tr>' +
            '</table>' +
            '<br />' +
            '<table border="1" bordercolor="C70A2E" style="background-color:#CF5C4D" width="100%" cellpadding="5" cellspacing="0">' +
            '  <tr>' +
            '    <td><a href="http://192.168.10.222">Dontenwill Blog</a></td>' +
            '  </tr>' +
            '</table>' +
            '</body></html>',

   oWebBrowser.CbLoadFromString(cHTML),
end,

//******************************************************************************
// Event bei Klick eines Buttons
// @Result: null
//******************************************************************************
function NavigateButton_Click(oSender)
   case oSender
      of oBtnBack       :: oWebBrowser.CbGoBack(),
      of oBtnForward    :: oWebBrowser.CbGoForward(),
      of oBtnRefreshStop:: if oBtnRefreshStop.ImageIndex.IndexNormal = 12 then
                              oWebBrowser.CbRefresh(),
                           else
                              oBtnRefreshStop.ImageIndex.IndexNormal = 12,
                              oWebBrowser.CbStop(),
                           endif,
      of oBtnHome       :: LoadHomeScreen(),
      of oBtnSearch     :: oWebBrowser.CbNavigateToSearch(),
      of oBtnNavigate   :: NavigateTo(oEditNavigate.Text),
   endcase,
end,

//******************************************************************************
// Buttons initialisieren
// @Result: null
//******************************************************************************
function InitButton(oButton, nImgIndex)
   oButton.Align := alLeft,
   oButton.Width := 23,
   oButton.ImageIndex.IndexNormal := nImgIndex,
   AssignEvent(oButton, 'OnClick', 'NavigateButton_Click'),
end,

//##############################################################################
//##############################################################################
// Events
//##############################################################################
//##############################################################################

//******************************************************************************
// bei ENTER Navigation auslösen
// @Result: null
//******************************************************************************
function EditNavigate_KeyDown(oSender, nKey)
  if nKey = 13 then
     NavigateTo(oEditNavigate.Text),
  endif,
end,

//******************************************************************************
// Lade-Status hat sich geändert
// @Result: null
//******************************************************************************
function WB_StatusTextChange(oSender, cText)
  oStatus.Caption := cText,
end,

//******************************************************************************
// Lade-Fortschritt hat sich geändert
// @Result: null
//******************************************************************************
function WB_ProgressChange(oSender, nProgress, nProgressMax)
   oProgress.Max      := nProgressMax,
   oProgress.Position := nProgress,
   oProgress.Visible  := (nProgress < nProgressMax) and (nProgress > 0),
end,

//******************************************************************************
// Titel der Seite hat sich geändert
//******************************************************************************
function WB_TitleChange(oSender, cTitle)
   oForm.Caption := cTitle,
end,

//******************************************************************************
// Status der Navigations-Buttons hat sich geändert
// @Result: null
//******************************************************************************
function WB_CommandStateChange(oSender, nCommandID, lEnabled)
   case nCommandID
      of 1:: oBtnForward.Enabled := lEnabled,
      of 2:: oBtnBack.Enabled := lEnabled,
   endcase,
end,

//******************************************************************************
// Bevor zu einer Seite navigiert wird
// @Result: null
//******************************************************************************
function WB_BeforeNavigate2(oSender, cURL, nFlags, cTargetFrameName, cPostData, cHeaders, lCancel)
   oBtnRefreshStop.ImageIndex.IndexNormal := 8,
   oBtnRefreshStop.Enabled                := True,
   oEditNavigate.Color                    := clWhite,

   // Facebook darf nicht angesteuert werden
   if 'facebook' $ cURL then
      lCancel                 := True,
      oStatus.Caption         := 'Die Seite "' + cURL + '" ist blockiert!',
      oBtnRefreshStop.Enabled := False,
   endif,
end,

//******************************************************************************
// Navigation abgeschlossen
// @Result: null
//******************************************************************************
function WB_NavigateComplete2(oSender, cURL)
   oEditNavigate.Text := oWebBrowser.CbLocationURL,
end,

//******************************************************************************
// Seite wurde fertig geladen (WB_NavigateComplete2 kommt früher)
// @Result: null
//******************************************************************************
function WB_DocumentComplete(oSender, cURL)
   oBtnRefreshStop.ImageIndex.IndexNormal := 12,
   oBtnRefreshStop.Enabled                := True,
end,

//******************************************************************************
// Fehler bei der Navigation zu einer Seite  z.b. www.abasdfasdfd.de
//******************************************************************************
function WB_NavigateError(oSender, cURL, cFrame, nStatusCode, lCancel)
   if oEditNavigate.Text $ cURL then
      oEditNavigate.Color := clRed,
   endif,
end,

//******************************************************************************
// URL kürzen falls zu lang
// @Result: null
//******************************************************************************
function CutUrlForShow(cUrl, nLength)
   if Len(cUrl) > nLength then
      cUrl := SubStr(cUrl, 1, nLength - 3) + '...',
   endif,

   Result := cUrl,
end,


//******************************************************************************
// vor dem erzeugen eines neuen Fensters
// @Result: null
//******************************************************************************
function WB_NewWindow3(oSender, lCancel, nFlags, cUrlContext, cUrl)
   lCancel := not JN('Die Seite "' + CutUrlForShow(cUrlContext, 100) + '"' + CRLF +
                     'versucht die Seite "' + CutUrlForShow(cUrl, 100) + '" in einem separtem Fenster zu öffnen.' + CRLF +
                     'Neues Fenster öffnen?'),
end,

//##############################################################################
//##############################################################################
// Oberflächen-Funktionen
//##############################################################################
//##############################################################################

//******************************************************************************
// LoadGUI lädt sämtliche Komponenten die für die Oberfläche benötigt werden
// @Result: null
//******************************************************************************
function LoadGUI()
   oForm           := CreateObject('TFormEx'),
   oWebBrowser     := CreateObject('TBeCbEmbeddedWebBrowser', 'WebBrowser', oForm, oForm),
   oPnl_Top        := CreateObject('TPanel', '', oForm, oForm),
   oPnl_TopLeft    := CreateObject('TPanel', '', oForm, oPnl_Top),
   oPnl_TopRight   := CreateObject('TPanel', '', oForm, oPnl_Top),
   oPnl_Bottom     := CreateObject('TPanel', '', oForm, oForm),
   oEditNavigate   := CreateObject('TBeEdit', '', oForm, oPnl_Top),
   oBtnBack        := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopLeft),
   oBtnForward     := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopLeft),
   oBtnRefreshStop := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopLeft),
   oBtnHome        := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopLeft),
   oBtnNavigate    := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopRight),
   oBtnSearch      := CreateObject('TBeSpeedButton', '', oForm, oPnl_TopRight),
   oStatus         := CreateObject('TPanel', '', oForm, oPnl_Bottom),
   oProgress       := CreateObject('TBeProgressBar', '', oForm, oPnl_Bottom),
   startseq
      oForm.Font.Name          := 'Segoe UI',
      oEditNavigate.Font.Size  := 9,
      oEditNavigate.Font.Style := fsBold,

      InitPanel(oPnl_Top),
      InitPanel(oPnl_TopLeft),
      InitPanel(oPnl_TopRight),
      InitPanel(oPnl_Bottom),
      InitPanel(oStatus),
      InitButton(oBtnBack, 23),
      InitButton(oBtnForward, 24),
      InitButton(oBtnRefreshStop, 8), // 12 Refresh 8 Stop
      InitButton(oBtnHome, 1),
      InitButton(oBtnSearch, 548),
      InitButton(oBtnNavigate, 666),

      oPnl_Top.Height     := 23,
      oPnl_TopLeft.Width  := 23 * 4,
      oPnl_TopRight.Width := 23 * 2,
      oPnl_Bottom.Height  := 18,
      oStatus.Height      := 18,

      oPnl_Top.Align      := alTop,
      oPnl_TopLeft.Align  := alLeft,
      oPnl_TopRight.Align := alRight,
      oPnl_Bottom.Align   := alBottom,
      oEditNavigate.Align := alClient,
      oWebBrowser.Align   := alClient,
      oStatus.Align       := alClient,
      oProgress.Align     := alLeft,

      // Statusanzeige
      oStatus.Alignment := 0,
      oStatus.AlignWithMargins := True,
      oStatus.Margins.Left     := 2,
      oStatus.Margins.Right    := 2,
      oStatus.Margins.Top      := 0,
      oStatus.Margins.Bottom   := 0,

      // Fortschrittsanzeige
      oProgress.Visible          := False,
      oProgress.Width            := 120,
      oProgress.AlignWithMargins := True,
      oProgress.Margins.Left     := 2,
      oProgress.Margins.Right    := 2,
      oProgress.Margins.Top      := 2,
      oProgress.Margins.Bottom   := 2,

      AssignEvent(oEditNavigate, 'OnKeyDown', 'EditNavigate_KeyDown'),
      AssignEvent(oWebBrowser, 'OnStatusTextChange', 'WB_StatusTextChange'),
      AssignEvent(oWebBrowser, 'OnProgressChange', 'WB_ProgressChange'),
      AssignEvent(oWebBrowser, 'OnTitleChange', 'WB_TitleChange'),
      AssignEvent(oWebBrowser, 'OnCommandStateChange', 'WB_CommandStateChange'),
      AssignEvent(oWebBrowser, 'OnBeforeNavigate2', 'WB_BeforeNavigate2'),
      AssignEvent(oWebBrowser, 'OnNavigateComplete2', 'WB_NavigateComplete2'),
      AssignEvent(oWebBrowser, 'OnDocumentComplete', 'WB_DocumentComplete'),
      AssignEvent(oWebBrowser, 'OnNavigateError', 'WB_NavigateError'),
      AssignEvent(oWebBrowser, 'OnNewWindow3', 'WB_NewWindow3'),

      oBtnBack.Enabled        := False,
      oBtnForward.Enabled     := False,
      oBtnRefreshStop.Enabled := False,

      LoadHomeScreen(),
   onerror
      DestroyObject(oForm),
      SetError('Fehler beim Laden der Oberfläche' + crlf + GetErrorText()),
   stopseq,
end,

//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################

startseq
   LoadGUI(),
   ShowModal(oForm),
onerror
   MessageDlg('Fehler im Programm ' + ProgName() + GetErrorText(), mtError),
stopseq,
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.