![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Pagecontrol and webbrowser
alak © (2003-06-30 10:00:00)
В общем пытаюсь написать некое подобие браузера Opera, Myie и пр.
При нажатии на ссылку в новом окне должен создоваться новый tabsheet на pagecontrol (создаю), а вот попытка пихнуть в созданный tabsheet webbrowser ни к чему не приводит.
var
newpage:Ttabsheet;
webb:Twebbrowser;
begin
//создание tabsheet и webbrowser
...
webb.parent:=newpage; //выдает ошибку, что параметр только readonly
end;
Также хотелось бы услышать - как работать с созданными webbrowser`ami в зависимости от открытой закладки. Спасибо.
ALaKO (2003-07-07 07:55:00) [1]
ответа на вопрос я не нашел, и хотел бы получить его здесь, собственно вопрос alak (05.07.03 11:33).
alako (2003-07-06 11:05:00) [2]
Думал что TEmbeddedWB поддерживает ентер только в одном экземпляре своем (от безысходности что только в голову не придет), оказалось - нет, глянув исходники понял что он присваивает handle... но решить проблему так и не смог.
alak (2003-07-05 11:33:00) [3]
Продолжение детектива. Многооконность есть, все как положено. Для того чтобы работал ентер использую Tembededwb но, после создания экзэмпляра нового Tembededwb ентер в новом экземпляре не работает.
a:=edit1.Text;
newpage:=TtabSheet.create(self);
newpage.pagecontrol:=pagecontrol1;
newpage.caption:=inttostr(pagecontrol1.pagecount);
newpage.Show;
newweb:=TEmbeddedWB.Create(self);
TOleControl(newweb).Parent := newpage;
newweb.Align:=alclient;
newweb.Silent:=true;
newweb.OnProgressChange:=web1.OnProgressChange ;
newweb.Onnewwindow2:=web1.Onnewwindow2;
newweb.OnStatusTextChange:=web1.OnStatusTextChange;
newweb.Ondownloadcomplete:=web1.Ondownloadcomplete;
newweb.Ondocumentcomplete:=web1.Ondocumentcomplete;
newweb.Onvisible:=web1.Onvisible;
TOleControl(newweb).name:="web"+inttostr(pagecontrol1.ActivePageindex+1);
newweb.Navigate(a);
alak (2003-07-03 20:28:00) [4]
Arm79
Не пройдет проходитт серьезная обработка всех страниц, вкупе с сохранением займет слишком много времени. Заказчик будет не доволен.
ночной кочмарь
не то чтобы рановато - просто опыта в динамическом создании не имел, теперь уже есть кое-что.
Сделал в принципе сам, спасибо всем за ответы.
Arm79 (2003-07-03 16:10:00) [5]
А если каждую страницу принудительно сохранять в отдельной папке? тогда не нужно долго ждать загрузки. Или можно перехватывать нажатие на гиперссылку в активном WebBrowser, и делать активной нужную страницу PageControl.
ночной кочмарь (2003-07-03 14:50:00) [6]
да уж.. имею хобби просматривить реакцию на свои ответы.. Хоть и зарекался сюда уже не ходить..
По сути.
webb.OnDocumentComplete := что - то подходящее по синтаксису..
Напимер, у нас есть
procedure TMySuperPuperForm_GDE_YA_BROUZERI_V_RANTAIME_SOZDAU.DoerDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
тогда
webb.OnDocumentComplete := DoerDocumentComplete;
Зы - кажется мне, рановато вы за клона MyIE взялись..
alak (2003-07-03 13:01:00) [7]
ночной кочмарь
В принципе понятно... так еще вопрос - как присвоить созданному webbrowser события, вроде document.comlite;
ночной кочмарь (2003-07-03 11:51:00) [8]
Говорили же тебе, внятно вопросы задавай..
А так, почитав alak (01.07.03 18:50) возникло подозрение, что в ночной кочмарь (01.07.03 14:32) уже содержится ответ. Навигация будет продолжаться в том броузере, интерфейс от которого был присвоен ppDisp..
Присваиваешь от вновь созданного - навигация продолжается в вновь созданном.. Присвоишь от текущего - продолжится в текущем.. И тд..
Зы2. Если не отвечают, то не значит что ответов нет.. Иногда вопрос нечеткий (в нашем случае такой елемент присутствует). Иногда просто субьективно. Как у меня. Задолбали некоторые товарищи на этом форуме (это не о alak).. Извините за анонимность.
alak (2003-07-03 09:59:00) [9]
похоже ответы исчерпались
alak (2003-07-03 06:57:00) [10]
Arm79
Так то оно так, но нужно чтобы любую из загруженных страниц можно было открыть мнгновенно - а не ждать пока она загрузится, т.к. большинство из всех страниц в кеш не прописываются.
Arm79 (2003-07-02 16:27:00) [11]
Я не понимаю проблемы. При использовании TabControl закладки очень легко добавляются. В названии закладки, например можно указать URL. А WebBrowser будет в единичном экземпляре. Тогда можно и использовать navigate с названием закладки вместо параметра.
alak (2003-07-02 08:51:00) [12]
часть вопроса осталась без ответа.
alak (2003-07-01 18:50:00) [13]
ночной кочмарь
"Открыть в новом окне">создание закладки с webbrowser`om>
это ясно, уже давно сделал.
Но, нужно navigate в активный веббровзер.
Т.е. выбрана страница 3, на ней лежит webbrowser свежесозданный, как перейти именно в нем? При условии что данные о name можно в принципе сохранять.
Арм79 (2003-07-01 14:39:00) [14]
Вместо PageControl можно использовать TabControl
ночной кочмарь (2003-07-01 14:32:00) [15]
Что то смутно изложенно.
Попытаюсь угадать
OnNewWindow - возникает при необходимости продолжить навигацию в новом окне. В обработчике этого события - создаешь закладку с вебброузером, и в этом обработчике ppDisp делаешь равным DefaultInterface созданного веббровзера.
> вычислить выбранную закладку
ActivePage ??
> сделать navigate в активном webbrowser.
совсем непонятно. Что такое активный? Навигацию куда? Вместо нового окна?
Ладно, я пошел. Стать пора. Ночью может снова на охоту выду. Но куда, не знаю. Сюда - вряд-ли. Скучно здесь.
alak (2003-07-01 13:22:00) [16]
В общем есть приложение, в этом приложении довольно много форм. Из главной формы можно вызвать окно, которое содержит mainmenu,panel и пр. В числе прочих содержит pagecontrol.
Нужно:
При нажатии в webbrowser на ссылку, которая должна открываться в новом окне, создавалась закладка на pagecontrol, а также экземпляр webbrowser с сохранениями всех его событий (document complite и.т.д.). Требуется, вычислить выбранную закладку и сделать navigate в активном webbrowser.
ночной кочмарь (2003-07-01 11:23:00) [17]
Чтобы получить полный и удовлетворяющий вопрос, то нужно дать полностью понятный для отвечающего вопрос.
Лично я, хотя сейчас и не ночь, и я не очень кочмарю, вопроса alak (01.07.03 08:42) не понял. Что такое обращаться, что токое компонент, и какие начальные условия. Например. Сохранили ли мы ссылку на созданный компонент в локальной переменной или списке, или неделали этого, так как существует куча других способов нахождения созданого компонента и тому подобно. Или воообще не об этом спич.
alak (2003-07-01 11:17:00) [18]
ответ то дан - но не полностью
alak (2003-07-01 08:42:00) [19]
Спасибо, но остался вопрос - как затем обращаться к компоненту, т.е. к примеру нужно сделать navigate активному (на выбранной странице) webbrowser.
ночной кочмарь (2003-07-01 01:45:00) [20]
>webb.parent:=newpage; //выдает ошибку, что параметр только readonly
try it
TOleControl(webb).Parent := newpage;
и в дополнение.. Вполне возможно, что для newpage нужно все же делать Visible. Присвоение Parent ненужно, так как это делается в SetPagecontrol