Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.026 c
14-24627
МАКСИК
2003-08-21 09:51
2003.09.08
КАК отучить собаку гавкать?


14-24674
NAlexey
2003-08-20 09:33
2003.09.08
Фень Юань?


1-24506
Anonimus
2003-08-27 10:45
2003.09.08
Работа с календарем


1-24465
Andrey V.
2003-08-27 20:55
2003.09.08
Разница в создании формы или почему я получаю AV


11-24397
AlexG
2003-01-03 14:17
2003.09.08
Базы!