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

Вниз

var-параметры в событии OnBeforeNavigate2 TWebBrowser a   Найти похожие ветки 

 
x-AL   (2004-04-21 21:43) [0]

Пишу так:

 WebBrowser.Navigate("http://origin.url/");

При этом обработчик события такой:

procedure TForm1.WebBrowserBeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
begin
 URL := "http://other.url/";
end;


Однако браузер всё равно пытается перейти к origin.url,
хотя в справке явно сказано, что можно изменить значение URL, чтоб перенаправить браузер по другому адресу.
Или я что-то делаю не так ?..


 
Piter ©   (2004-04-21 22:36) [1]

хм, мне тоже интересно... сказано четко
"URL is the Uniform Resource Locator of the resource the Web browser is looking up. Change this value to redirect the navigation operation to a different resource"


 
nikkie ©   (2004-04-21 23:00) [2]

это вы неправильную справку читаете

...
URL
[in] URL to be navigated to.
...
Cancel
[out] Address of a cancel flag. An application can set this parameter to TRUE to cancel the navigation operation, or to FALSE to allow it to proceed.


 
Piter ©   (2004-04-21 23:34) [3]

Не понял... приведи лучше приме перенаправления в событии OnBeforeNavigate2.

Ты хочешь сказать, что в нем нельзя перенаправлять? Но ведь сказано

"URL is the Uniform Resource Locator of the resource the Web browser is looking up. Change this value to redirect the navigation operation to a different resource"


 
easy ©   (2004-04-22 09:55) [4]

var Test : boolean;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Test := false;
   WebBrowser1.Navigate("http://www.microsoft.com");
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
begin
 if not Test then
 begin
   Test := True;
   Cancel := True;
   WebBrowser1.Stop;
   WebBrowser1.Navigate( "http://www.borland.com");
 end;
end;


 
Piter ©   (2004-04-22 17:34) [5]

Согласен, возможна и такая трактовка.

А зачем тогда URL по ссылке передается?


 
SergP ©   (2004-04-22 20:18) [6]


> easy ©   (22.04.04 09:55) [4]
>    WebBrowser1.Stop;
>    WebBrowser1.Navigate( "http://www.borland.com");


А если на страничке несколько фреймов, то получится что если мы хотим заменить один из фреймов, то новая фигня загрузится не в виде фрейма....


 
x-AL   (2004-04-22 20:26) [7]

Пути МелкоМягких неисповедимы... :)
Да еще самодеятельность Бормана...


 
Piter ©   (2004-04-23 23:08) [8]

Никто не знает?

>А зачем тогда URL по ссылке передается?


 
SergP ©   (2004-04-24 00:16) [9]

Piter ©   (23.04.04 23:08)

А зачем тогда URL по ссылке передается?

Ну для того чтобы ты мог его юзать хотя бы для read
Например очень удобно вырубать ненужные фреймы...

типа if URL="..." then cancel:=true;

x-AL   (21.04.04 21:43)

Юзай TEmbeddedWB. Там есть возможность изменять УРЛ, только не в OnBeforeNavigate2, а там для этого есть другой event. Да и на ихнем сайте есть примеры как его юзать...


 
Piter ©   (2004-04-24 00:32) [10]

SergP (24.04.04 00:16) [9]
>А зачем тогда URL по ссылке передается?

Ну для того чтобы ты мог его юзать хотя бы для read


Чего? Ты о чем? Я говорю - почему передается по ссылке, а не по значения параметр URL?

SergP (24.04.04 00:16) [9]
Юзай TEmbeddedWB. Там есть возможность изменять УРЛ, только не в OnBeforeNavigate2, а там для этого есть другой event


ага, можно и ручками. Реализовать IDocHostUIHandler... в общем,  http://www.compress.ru/Article.asp?id=1127


 
x-AL   (2004-04-24 00:36) [11]

А где можно взять TEmbeddedWB ?


 
SergP ©   (2004-04-24 07:02) [12]

>Чего? Ты о чем? Я говорю - почему передается по ссылке, а не по значения параметр URL?

М-да. Я как-то не въехал в вопрос и хмурню написал...
Кстати до сих пор не могу в него въехать...

>А где можно взять TEmbeddedWB ?

http://euromind.com/iedelphi/


 
Piter ©   (2004-04-24 10:47) [13]

SergP (24.04.04 07:02) [12]

Видишь в обработчике стоит "var Cancel" - значит, этот параметр передается по ссылке, а не по значению. Ты знаешь разницу между этими понятиями?
Посмотри в справке, раздел "procedure calls", там выберешь "Calling procedures and functions", ткнешь на "Topic Groups", там увидишь "Value and variable parameters"


 
Piter ©   (2004-04-24 10:49) [14]

Почему Cancel по ссылку передается - очевидно. А вот зачем URL? Если его изменение ни к чемун е ведет...


 
SergP ©   (2004-04-24 13:38) [15]

Piter ©   (24.04.04 10:47) [13]

Блин. Понял.. Просто почемуто слово "Ссылка" у меня первоначально асоциировалась с URL...

:-)))
Так иногда бывает...


 
nikkie ©   (2004-04-25 16:09) [16]

>Piter
>Но ведь сказано
в справке по TWebBrowser.OnBeforeNavigate2 написана лажа. почему - не знаю, спроси у Borland-а. я приводил цитату из MSDN из справки по DWebBrowserEvents2::BeforeNavigate2.

>А зачем тогда URL по ссылке передается?
наверное, такова специфика COM Automation. параметры передаются универсально как VARIANT, а определить какие параметры можно изменять - либо по документации, либо в run-time по наличию флага VT_BYREF в поле vt (в дельфийском синтаксисе TVarData(URL).VType).

если посмотреть в C++-декларации, то URL, Flags объявлены как VARIANT *. дельфийский import type library логично объявляет их как var OleVariant.


 
213123   (2004-05-04 16:12) [17]

Урл может передаваться и для того, чтобы выборочно отменять загрузку....
Только если имзенение ни к чему не ведет, почему он передается как var?



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
6-1083846266
Dristone
2004-05-06 16:24
2004.06.27
Как с помощью IdEcho построить маршрут?


4-1085076219
Pupernik
2004-05-20 22:03
2004.06.27
невидимые формы


4-1084938534
HellWaiter
2004-05-19 07:48
2004.06.27
Список дисков


1-1087111237
NV-VETAL
2004-06-13 11:20
2004.06.27
TWebbrowser как в форме нажать кнопку?


14-1086898037
Ксения Собчак
2004-06-11 00:07
2004.06.27
Засвидетельствовать своё почтение