Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
14-24706
Zhirnov Maxim
2003-08-19 09:16
2003.09.08
Как заменить интегрированную видео-карту на AGP шную?


9-24296
Gayrus
2003-03-05 03:32
2003.09.08
OpenGL форма и компоненты


1-24434
Abikos
2003-08-25 18:48
2003.09.08
вопрос о Frame ах ....


8-24562
Lamer111
2003-05-07 21:33
2003.09.08
звук в делфи


9-24292
Карлсон
2002-12-15 14:53
2003.09.08
GLScene





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский