Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Pagecontrol and webbrowser


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо