![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Привет всем! Народ, такой интересный вопрос, в webbrowser отображается как нибудь html страница в которой есть FRAME, как сохранить именно Frame а не всю страницу?
|
#2
|
||||
|
||||
![]() Цитата:
Как добраться до конкретного фрейма Получить все URLs фреймов в TWebBrowser Сохранить исходный код всех фреймов TWebBrowser |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
borockov (23.11.2012)
|
#3
|
||||
|
||||
![]() Оо спасибо=))))
|
#4
|
||||
|
||||
![]() С первым вопросом вроде бы разобрался. Но теперь возник ещё 1 вопрос, у меня стоит компонент webbrowser в качестве вкладок прицелен pagecontrol, такой вопрос, если у меня к примеру открыто 10 вкладок, как сохранить все текущие страницы при нажатий одной кнопки?
|
#5
|
||||
|
||||
![]() Цитата:
|
#6
|
||||
|
||||
![]() Одну страницу я сохраняю с использованием Savedialog, и получается если я сделаю сохранение в цикле каждый раз будет выскакивать диалоговое окно?
Код:
procedure TForm1.SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser); var PersistStream: IPersistStreamInit; FileStream: TFileStream; Stream: IStream; SaveResult: HRESULT; begin PersistStream := WB.Document as IPersistStreamInit; FileStream := TFileStream.Create(FileName, fmCreate); try Stream := TStreamAdapter.Create(FileStream, soReference) as IStream; SaveResult := PersistStream.Save(Stream, True); if FAILED(SaveResult) then MessageBox(Handle, 'Fail to save HTML source', 'Error', 0); finally FileStream.Free; end; end; и онклик для кнопки Код:
if SaveDialog1.Execute then SaveHTMLSourceToFile(SaveDialog1.FileName, WebBrowser1); |
#7
|
||||
|
||||
![]() Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
borockov (24.11.2012)
|
#8
|
||||
|
||||
![]() Как я уже говорил, вкладки у меня реализованы таким образом: поставил pagecontrol, создал 20 табов и на каждый ташит прицепил по компоненту webbrowser, в принципе всё работает как надо, но вопрос с сохранением всё же не могу решить=(
Таким образом я могу сохранить текущую страницу. Код:
procedure TForm1.Button14Click(Sender: TObject); var HTMLDocument: IHTMLDocument2; PersistFile: IPersistFile; j:integer; begin HTMLDocument := Webbrowser1.Document as IHTMLDocument2; PersistFile := HTMLDocument as IPersistFile; PersistFile.Save(StringToOleStr('D:\SavedFile.html'), System.True); end; end. Код:
procedure TForm1.Button14Click(Sender: TObject); var HTMLDocument: IHTMLDocument2; PersistFile: IPersistFile; j:integer; begin HTMLDocument :=TWebbrowser(pagecontrol1.pages[j].Controls[0]).Document as IHTMLDocument2; PersistFile := HTMLDocument as IPersistFile; PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True); end; end; end; end. Помогите пожалуйста, сохранить в цикле. |
#9
|
||||
|
||||
![]() Цитата:
|
#10
|
||||
|
||||
![]() Цитата:
Код:
for j:=0 to pagecontrol1.PageCount-1 do |
#11
|
||||
|
||||
![]() Цитата:
|
#12
|
||||
|
||||
![]() Код:
procedure TForm1.Button14Click(Sender: TObject); var HTMLDocument: IHTMLDocument2; PersistFile: IPersistFile; j:integer; begin for j:=0 to pagecontrol1.PageCount-1 do HTMLDocument:=TWebbrowser(pagecontrol1.pages[j].Controls[0]).Document as IHTMLDocument2; PersistFile := HTMLDocument as IPersistFile; PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True); end; end. В таком случае выдаёт ошибку "list index out of bounds (30) ", но конкретную строку не показывает. Есть подозрения что ошибка кроется тут Код:
PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True); |
#13
|
||||
|
||||
![]() Цитата:
|
#14
|
||||
|
||||
![]() Теперь выскакивает ошибка в этой строке
Код:
PersistFile.Save(StringToOleStr('D:\'+pagecontrol1.Pages[j].Caption+'.html'), System.True); Ошибка: raise exception class eaccessviolation - и.т.д |
#15
|
||||
|
||||
![]() Только щас заметил что сохранять то он сохраняет, но после этого уже вылетает вышеописаная ошибка
|