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)
Eigenschaften | Beschreibung |
---|---|
CbLocationURL:C | Url der aktuell angezeigten Seite |
CbLocationName:C | Titel der aktuell angezeigten Seite |
Funktionen und Methoden | Beschreibung |
---|---|
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 Events | Beschreibung |
---|---|
OnStatusTextChange | Status hat sich geändert |
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 |
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 |
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 |
StatusCode:N | HTTP Status Code |
Cancel:L | Fehlerbehandlung abbrechen |
OnNewWindow3 | Bevor ein neues Fenster angezeigt wird |
aSender:O | Browser welches den Event ausgelöst hat |
Cancel:L | Anzeige abbrechen |
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
//##############################################################################
//##############################################################################
// 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,