Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2009, 13:19   #1
Ronder
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 28
По умолчанию Скопировать элемент

На форме есть два компонента WebBrowser. В один из них загружается сайт, другой элемент пустой. Также на форме есть button, после нажатия на который первый WebBrowser должен отобразить все свойства второго WebBrowser, а также отобразить загруженную в него страницу.

Как такое сделать? Можно ли использовать указатели или как-то по-другому?
Ronder вне форума Ответить с цитированием
Старый 28.08.2009, 16:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какие именно св-ва?
загруженную страницу это ссылку иль содержимое?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.08.2009, 17:39   #3
Ronder
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 28
По умолчанию

Загруженную страницу
Ronder вне форума Ответить с цитированием
Старый 28.08.2009, 17:47   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Если только загруженную страницу, то вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 WebBrowser2.Navigate(WebBrowser1.LocationURL);
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.08.2009, 17:51   #5
Ronder
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 28
По умолчанию

Нет, смысл в том, что первый WebBrowser уже не должен использовать интернет, а взять уже загруженную страницу из второго.
Ronder вне форума Ответить с цитированием
Старый 28.08.2009, 17:56   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ну он из кэша, вроде бы, и берет...
Попробуйте и сравните быстроту загрузки во втором WebBrowser'е при нажатии на эту кнопку.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 29.08.2009, 11:01   #7
Ronder
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 28
По умолчанию

Загружаю страницу в первый WebBrowser, отрубаю инет, пробую загрузить страницу во второй WebBrowser - не удаётся отобразить страницу.
Ronder вне форума Ответить с цитированием
Старый 29.08.2009, 12:31   #8
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ну вот так попробуйте:
Код:
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  ss := TStringStream.Create('');
  try
    sa := TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
    if Result then ACode.Text := ss.Datastring;
  finally
    ss.Free;
  end;
end;

procedure wb_loadhtml(webbrowser: twebbrowser; htmlcode: string);
var
 sl: tstringlist;
 ms: tmemorystream;
begin
 webbrowser.navigate('about:blank');
 while webbrowser.readystate < readystate_interactive do
  application.processmessages;

 if assigned(webbrowser.document) then
 begin
  sl := tstringlist.create;
  try
   ms := tmemorystream.create;
   try
    sl.text := htmlcode;
    sl.savetostream(ms);
    ms.seek(0, 0);
    (webbrowser.document as
    ipersiststreaminit).load(tstreamadapter.create(ms));
   finally
    ms.free;
   end;
  finally
    sl.free;
  end;
 end;
end;

procedure TForm1.bt_1Click(Sender: TObject);
var
 Code: TStrings;
begin
 Code := TStringList.Create;
 try
  WB_GetHTMLCode(wb1, Code); //Получаем код из первого браузера
  wb_loadhtml(wb2, Code.Text);  //Присваиваем код второму браузеру
 finally
  Code.Free;
 end;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 29.08.2009, 16:43   #9
Ronder
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 28
По умолчанию

То, что надо! Спасибо!
Ronder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как скопировать form2? blackstersl Общие вопросы Delphi 7 12.06.2009 13:22
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Как скопировать программу RAVAL)) Общие вопросы Delphi 1 06.01.2009 02:57
скопировать/вставить snakezx Microsoft Office Excel 2 24.11.2008 17:04
как скопировать? zetrix Microsoft Office Excel 0 30.10.2006 18:52