Форум: "Основная";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизВсе тот же злосчастный TWebbrowser1 сохранение в HTML Найти похожие ветки
← →
Igor23 (2008-02-14 19:39) [0]Ребя помогите же!?
Гружу нужную страничку WebBrowser1.Navigate(""); и сохраняю function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
Всё работает, да не всё)....сохраняется верхний фрейм, а нужен который по центру. Как его получить?
← →
ketmar © (2008-02-14 19:40) [1]бери, и сохраняй фрейм.
---
Understanding is not required. Only obedience.
← →
Igor23 (2008-02-14 21:28) [2]Подскажите на пальцах для неуча как по имени фрейм сохранить?
← →
homm © (2008-02-14 21:35) [3]Имени чего?
← →
Igor23 (2008-02-14 21:38) [4]фрейма конечно....пробовал следующий код код уже измучился:
// Alle Frameseiten in einzelne Dateien speichern
procedure TForm1.Button2Click(Sender: TObject);
var
IpStream: IPersistStreamInit;
AStream: TMemoryStream;
iw: IWebbrowser2;
i: Integer;
sl: TStringList;
begin
for i := 0 to Webbrowser1.OleObject.Document.frames.Length - 1 do
begin
iw := GetFrame(i);
AStream := TMemoryStream.Create;
try
IpStream := iw.document as IPersistStreamInit;
if Succeeded(IpStream.save(TStreamadapter.Create(AStream), True)) then
begin
AStream.Seek(0, 0);
sl := TStringList.Create;
sl.LoadFromStream(AStream);
sl.SaveToFile("c:\frame" + IntToStr(i) + ".txt");
// memo1.Lines.LoadFromStream(AStream);
sl.Free;
end;
except
end;
AStream.Free;
end;
end;
← →
Igor23 (2008-02-14 21:42) [5]Предварительно:
uses
ActiveX;
function TForm1.GetFrame(FrameNo: Integer): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
unk: IUnknown;
Fetched: PLongint;
begin
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
if Assigned(Webbrowser1.document) then
begin
Fetched := nil;
OleContainer := Webbrowser1.Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, Unk, Fetched);
Result := Unk as IWebbrowser2;
end
else
Result := nil;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate("http://");
end;
Код работает но не сохраняет в тексm
← →
homm © (2008-02-14 21:51) [6]
document.frames.length;
document.frames.item(X).name;
← →
Igor23 (2008-02-14 22:08) [7]function TForm1.WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var
ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
begin
ps:= WebBrowser.Document as IPersistStreamInit;
fs:= TFileStream.Create(FileName, fmCreate);
try
sa:= TStreamAdapter.Create(fs, soReference) as IStream;
Result:= Succeeded(ps.Save(sa, True));
finally
fs.Free;
end;
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
CurWebrowser: IWebBrowser;
TopWebBrowser: IWebBrowser;
i: integer;
ovElements: OleVariant;
begin
try
ovElements:= WebBrowser1.OleObject.Document.Frames;
for i:= 0 to (ovElements.Length - 1) do
if ovElements.item(i).name="MainFrame" then
WB_SaveHTMLCode(WebBrowser1, "MyFrameTags.txt");
except
end;
end;
← →
homm © (2008-02-14 22:10) [8]И? Дай угадаю, у небя ничерта не вышло. Язык прикусил, или пальцы прищемил?
← →
Igor23 (2008-02-14 22:19) [9]угадал!!! :( Не знаю что писать после if ovElements.item(i).name="MainFrame" then ??? и кажется что такое сохранение WB_SaveHTMLCode здесь не катит Как сделать х.з
← →
homm © (2008-02-14 22:31) [10]
function WB_SaveHTMLCode(WebBrowser: IDispatch; const FileName: TFileName): Boolean;
var
ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
begin
ps:= WebBrowser as IPersistStreamInit;
fs:= TFileStream.Create(FileName, fmCreate);
try
sa:= TStreamAdapter.Create(fs, soReference) as IStream;
Result:= Succeeded(ps.Save(sa, True));
finally
fs.Free;
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
DOM: Variant;
buyerStyle: Variant;
i: integer;
doc: IDispatch;
begin
DOM := WB.OleObject.Document;
{buyerStyle := DOM.getElementById("buyer-open").style;
if buyerStyle.display = "block" then
buyerStyle.display := "none"
else
buyerStyle.display := "block";}
//label1.Caption := DOM.frames.item(0).document.documentElement.innerHTML;;
buyerStyle:= WB.OleObject.Document.Frames;
for i:= 0 to (buyerStyle.Length - 1) do begin
doc := buyerStyle.item(i).document;
WB_SaveHTMLCode(doc, "C:\\MyFrameTags.txt");
end;
end;
← →
Igor23 (2008-02-14 22:49) [11]WB_SaveHTMLCode(doc, "C:\\MyFrameTags.txt"); -ошибка Incompatible types: "TWebBrowser" and "IDispatch"
← →
homm © (2008-02-14 22:50) [12]> [11] Igor23 (14.02.08 22:49)
Попробуй использовать глаз.
← →
Igor23 (2008-02-14 22:58) [13]Всё работает спасибо....эт чо получается код со всех фреймов в файл собирает?
← →
homm © (2008-02-14 23:01) [14]> [13] Igor23 (14.02.08 22:58)
Это получается я тебе показал как можно, а теперь включи еще и мозг и сделай как тебе нужно.
← →
Igor23 (2008-02-14 23:15) [15]К сожалению мозг не желает работать, i -ручками придется подбирать:). Где нить бы литру по программированию веб-документов на Delphi найти было бы великолепно.
homm спасибо ещё раз огромное очень помогли!!!
← →
homm © (2008-02-14 23:23) [16]> [15] Igor23 (14.02.08 23:15)
> i -ручками придется подбирать:).
Какой ручками! Ты же гвоорил, что тебе имя фрейма известно, вот и вставь тудыif ovElements.item(i).name="MainFrame" then
Сам же так писал.
← →
Igor23 (2008-02-14 23:29) [17]))) точно! Забыл уже имя. Надо опять в Fox-е посмотреть
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c