Никак не могу найти толковых примеров не совсем тривиального использования WebBrowser в Delphi... Перерыл кучу книг, пытался найти в интернете, а ничего не находится... Если есть какие-то примеры, то для имбицилов, в стиле "поместите контрол на форму и теперь можно даже вызвать несколько классных методов!". Идея в том, что мне нужно поиметь доступ к загруженному HTML-документу, а это, как выясняется, нужно делать через интерфейс IDispatch. Но как? Учитывая полное отсутствие опыта в работе с COM/OLE хотелось бы посмотреть на конкретные примеры, как это сделано именно с WebBrowser. Но увы...
Может, кто-нибудь подскажет, где найти толковые материалы по теме?
Буду безмерно благодарен...
Здравствуйте Аноним, Вы писали:
А>Никак не могу найти толковых примеров не совсем тривиального использования WebBrowser в Delphi... Перерыл кучу книг, пытался найти в интернете, а ничего не находится... Если есть какие-то примеры, то для имбицилов, в стиле "поместите контрол на форму и теперь можно даже вызвать несколько классных методов!". Идея в том, что мне нужно поиметь доступ к загруженному HTML-документу, а это, как выясняется, нужно делать через интерфейс IDispatch. Но как? Учитывая полное отсутствие опыта в работе с COM/OLE хотелось бы посмотреть на конкретные примеры, как это сделано именно с WebBrowser. Но увы...
А>Может, кто-нибудь подскажет, где найти толковые материалы по теме?
Материалов не видел, но могу привести пример доступа к таблицам в HTML странице (на VB, в Дельфе думаю примерно также должно выглядеть):
' эта процедура удаляет все строки из таблицы
' WB - WebBrowser control на форме
' tabId - ID таблицы, атрибут ID в тэге <table>
Public Sub Table_Del_Rows (tabId As String, WB As Object)
Dim table As Object
Dim l As Integer
Dim i As Integer
'
Select Case tabId
Case "Status"
Set table = WB.Document.All("Status")
Case "Attrs"
Set table = WB.Document.All("Attrs")
Case Else
MsgBox "Del Rows: Unknown table ID " & tabId, vbCritical Or vbOKOnly
Exit Sub
End Select
If table.rows.length > 1 Then
l = table.rows.length
For i = 1 To (l - 1)
table.deleteRow (0)
Next i
End If
End Sub
' эта процедура добавляет строки, столбци в эти строки и данные в столбцы
Public Sub Table_Add_Rows (tabId As String, Name As String, val As String, WB As Object)
Dim newRow As Object, newName As Object, newImg As Object, newVal As Object
'
Select Case tabId
Case "Status"
Set newRow = WB.Document.All("Status").insertRow()
Case "Attrs"
Set newRow = WB.Document.All("Attrs").insertRow()
Case Else
MsgBox "Add Rows: Unknown table ID " & tabId, vbCritical Or vbOKOnly
Exit Sub
End Select
Set newName = newRow.insertCell()
newName.Style.backgroundColor = "#ff9966"
newName.innerText = Name
Set newImg = newRow.insertCell()
newImg.Style.backgroundColor = "#ffffff"
Set newVal = newRow.insertCell()
newVal.Style.backgroundColor = "#e3e3e3"
newVal.innerText = val
'
End Sub
В примере:
1 — HTML документ написан мной, поэтому я знаю его структуру. лежит в ресурсах программы.
2 — WB это WebBrowser контрол от MS. Лежит на форме.
3 — Status и Attrs это две таблицы в HTML документе.
Удачи.