Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1225113127
Nil
2008-10-27 16:12
2008.12.07
Зашифровать содержимое TStringList


2-1225354834
SKIPtr
2008-10-30 11:20
2008.12.07
Коректно закрыть вкладку


8-1188395934
Dr. Andrew
2007-08-29 17:58
2008.12.07
Как изменить размер bitmap в памяти?


2-1225277295
garik_
2008-10-29 13:48
2008.12.07
Наследование


2-1224817783
Татьяна
2008-10-24 07:09
2008.12.07
Таблицы Paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский