Форум: "Сети";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизPagecontrol and webbrowser Найти похожие ветки
← →
alak (2003-06-30 10:00) [0]В общем пытаюсь написать некое подобие браузера Opera, Myie и пр.
При нажатии на ссылку в новом окне должен создоваться новый tabsheet на pagecontrol (создаю), а вот попытка пихнуть в созданный tabsheet webbrowser ни к чему не приводит.
var
newpage:Ttabsheet;
webb:Twebbrowser;
begin
//создание tabsheet и webbrowser
...
webb.parent:=newpage; //выдает ошибку, что параметр только readonly
end;
Также хотелось бы услышать - как работать с созданными webbrowser`ami в зависимости от открытой закладки. Спасибо.
← →
Cobalt (2003-06-30 11:34) [1]Вот это место поподробнее:
//создание tabsheet и webbrowser
← →
alak (2003-06-30 12:19) [2]newpage:=TtabSheet.create(self);
newpage.pagecontrol:=pagecontrol1;
newpage.caption:=inttostr(pagecontrol1.pagecount);
← →
alak (2003-06-30 12:55) [3]Пока проблема не решена, к сожалению.
← →
alak (2003-06-30 18:43) [4]Проблема все еще не решена.
← →
ночной кочмарь (2003-07-01 01:45) [5]
>webb.parent:=newpage; //выдает ошибку, что параметр только readonly
try it
TOleControl(webb).Parent := newpage;
и в дополнение.. Вполне возможно, что для newpage нужно все же делать Visible. Присвоение Parent ненужно, так как это делается в SetPagecontrol
← →
alak (2003-07-01 08:42) [6]Спасибо, но остался вопрос - как затем обращаться к компоненту, т.е. к примеру нужно сделать navigate активному (на выбранной странице) webbrowser.
← →
alak (2003-07-01 11:17) [7]ответ то дан - но не полностью
← →
ночной кочмарь (2003-07-01 11:23) [8]Чтобы получить полный и удовлетворяющий вопрос, то нужно дать полностью понятный для отвечающего вопрос.
Лично я, хотя сейчас и не ночь, и я не очень кочмарю, вопроса alak (01.07.03 08:42) не понял. Что такое обращаться, что токое компонент, и какие начальные условия. Например. Сохранили ли мы ссылку на созданный компонент в локальной переменной или списке, или неделали этого, так как существует куча других способов нахождения созданого компонента и тому подобно. Или воообще не об этом спич.
← →
alak (2003-07-01 13:22) [9]В общем есть приложение, в этом приложении довольно много форм. Из главной формы можно вызвать окно, которое содержит mainmenu,panel и пр. В числе прочих содержит pagecontrol.
Нужно:
При нажатии в webbrowser на ссылку, которая должна открываться в новом окне, создавалась закладка на pagecontrol, а также экземпляр webbrowser с сохранениями всех его событий (document complite и.т.д.). Требуется, вычислить выбранную закладку и сделать navigate в активном webbrowser.
← →
ночной кочмарь (2003-07-01 14:32) [10]Что то смутно изложенно.
Попытаюсь угадать
OnNewWindow - возникает при необходимости продолжить навигацию в новом окне. В обработчике этого события - создаешь закладку с вебброузером, и в этом обработчике ppDisp делаешь равным DefaultInterface созданного веббровзера.
> вычислить выбранную закладку
ActivePage ??
> сделать navigate в активном webbrowser.
совсем непонятно. Что такое активный? Навигацию куда? Вместо нового окна?
Ладно, я пошел. Стать пора. Ночью может снова на охоту выду. Но куда, не знаю. Сюда - вряд-ли. Скучно здесь.
← →
Арм79 (2003-07-01 14:39) [11]Вместо PageControl можно использовать TabControl
← →
alak (2003-07-01 18:50) [12]ночной кочмарь
"Открыть в новом окне">создание закладки с webbrowser`om>
это ясно, уже давно сделал.
Но, нужно navigate в активный веббровзер.
Т.е. выбрана страница 3, на ней лежит webbrowser свежесозданный, как перейти именно в нем? При условии что данные о name можно в принципе сохранять.
← →
alak (2003-07-02 08:51) [13]часть вопроса осталась без ответа.
← →
Arm79 (2003-07-02 16:27) [14]Я не понимаю проблемы. При использовании TabControl закладки очень легко добавляются. В названии закладки, например можно указать URL. А WebBrowser будет в единичном экземпляре. Тогда можно и использовать navigate с названием закладки вместо параметра.
← →
alak (2003-07-03 06:57) [15]Arm79
Так то оно так, но нужно чтобы любую из загруженных страниц можно было открыть мнгновенно - а не ждать пока она загрузится, т.к. большинство из всех страниц в кеш не прописываются.
← →
alak (2003-07-03 09:59) [16]похоже ответы исчерпались
← →
ночной кочмарь (2003-07-03 11:51) [17]Говорили же тебе, внятно вопросы задавай..
А так, почитав alak (01.07.03 18:50) возникло подозрение, что в ночной кочмарь (01.07.03 14:32) уже содержится ответ. Навигация будет продолжаться в том броузере, интерфейс от которого был присвоен ppDisp..
Присваиваешь от вновь созданного - навигация продолжается в вновь созданном.. Присвоишь от текущего - продолжится в текущем.. И тд..
Зы2. Если не отвечают, то не значит что ответов нет.. Иногда вопрос нечеткий (в нашем случае такой елемент присутствует). Иногда просто субьективно. Как у меня. Задолбали некоторые товарищи на этом форуме (это не о alak).. Извините за анонимность.
← →
alak (2003-07-03 13:01) [18]ночной кочмарь
В принципе понятно... так еще вопрос - как присвоить созданному webbrowser события, вроде document.comlite;
← →
ночной кочмарь (2003-07-03 14:50) [19]да уж.. имею хобби просматривить реакцию на свои ответы.. Хоть и зарекался сюда уже не ходить..
По сути.
webb.OnDocumentComplete := что - то подходящее по синтаксису..
Напимер, у нас есть
procedure TMySuperPuperForm_GDE_YA_BROUZERI_V_RANTAIME_SOZDAU.DoerDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
тогда
webb.OnDocumentComplete := DoerDocumentComplete;
Зы - кажется мне, рановато вы за клона MyIE взялись..
← →
Arm79 (2003-07-03 16:10) [20]А если каждую страницу принудительно сохранять в отдельной папке? тогда не нужно долго ждать загрузки. Или можно перехватывать нажатие на гиперссылку в активном WebBrowser, и делать активной нужную страницу PageControl.
← →
alak (2003-07-03 20:28) [21]Arm79
Не пройдет проходитт серьезная обработка всех страниц, вкупе с сохранением займет слишком много времени. Заказчик будет не доволен.
ночной кочмарь
не то чтобы рановато - просто опыта в динамическом создании не имел, теперь уже есть кое-что.
Сделал в принципе сам, спасибо всем за ответы.
← →
alak (2003-07-05 11:33) [22]Продолжение детектива. Многооконность есть, все как положено. Для того чтобы работал ентер использую 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);
← →
alako (2003-07-06 11:05) [23]Думал что TEmbeddedWB поддерживает ентер только в одном экземпляре своем (от безысходности что только в голову не придет), оказалось - нет, глянув исходники понял что он присваивает handle... но решить проблему так и не смог.
← →
ALaKO (2003-07-07 07:55) [24]ответа на вопрос я не нашел, и хотел бы получить его здесь, собственно вопрос alak (05.07.03 11:33).
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c