![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
var-параметры в событии OnBeforeNavigate2 TWebBrowser'a [D7, WinXP]
x-AL © (2004-04-21 21:43:00)Пишу так:
WebBrowser.Navigate(' http://origin.url/');
При этом обработчик события такой:
procedureTForm1.WebBrowserBeforeNavigate2(Sender: TObject;
constpDisp: IDispatch; varURL, Flags, TargetFrameName, PostData,
Headers: OleVariant; varCancel: WordBool);
begin
URL := ' http://other.url/';
end;
Однако браузер всё равно пытается перейти к origin.url,
хотя в справке явно сказано, что можно изменить значение URL, чтоб перенаправить браузер по другому адресу.
Или я что-то делаю не так ?..
213123 (2004-05-04 16:12:00) [1]Урл может передаваться и для того, чтобы выборочно отменять загрузку....
Только если имзенение ни к чему не ведет, почему он передается как var?
nikkie (2004-04-25 16:09:00) [2]>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.
SergP (2004-04-24 13:38:00) [3]Piter © (24.04.04 10:47) [13]
Блин. Понял.. Просто почемуто слово "Ссылка" у меня первоначально асоциировалась с URL...
:-)))
Так иногда бывает...
Piter (2004-04-24 10:49:00) [4]Почему Cancel по ссылку передается - очевидно. А вот зачем URL? Если его изменение ни к чемун е ведет...
Piter (2004-04-24 10:47:00) [5]SergP (24.04.04 07:02) [12]
Видишь в обработчике стоит ' varCancel' - значит, этот параметр передается по ссылке, а не по значению. Ты знаешь разницу между этими понятиями?
Посмотри в справке, раздел "procedure calls", там выберешь "Calling procedures and functions", ткнешь на "Topic Groups", там увидишь "Value and variable parameters"
SergP (2004-04-24 07:02:00) [6]>Чего? Ты о чем? Я говорю - почему передается по ссылке, а не по значения параметр URL?
М-да. Я как-то не въехал в вопрос и хмурню написал...
Кстати до сих пор не могу в него въехать...
>А где можно взять TEmbeddedWB ?
http://euromind.com/iedelphi/
x-AL (2004-04-24 00:36:00) [7]А где можно взять TEmbeddedWB ?
Piter (2004-04-24 00:32:00) [8]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
SergP (2004-04-24 00:16:00) [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-23 23:08:00) [10]Никто не знает?
>А зачем тогда URL по ссылке передается?
x-AL (2004-04-22 20:26:00) [11]Пути МелкоМягких неисповедимы... :)
Да еще самодеятельность Бормана...
SergP (2004-04-22 20:18:00) [12]
> easy © (22.04.04 09:55) [4]
> WebBrowser1.Stop;
> WebBrowser1.Navigate( ' http://www.borland.com');
А если на страничке несколько фреймов, то получится что если мы хотим заменить один из фреймов, то новая фигня загрузится не в виде фрейма....
Piter (2004-04-22 17:34:00) [13]Согласен, возможна и такая трактовка.
А зачем тогда URL по ссылке передается?
easy (2004-04-22 09:55:00) [14]
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-21 23:34:00) [15]Не понял... приведи лучше приме перенаправления в событии 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"
nikkie (2004-04-21 23:00:00) [16]это вы неправильную справку читаете
...
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 22:36:00) [17]хм, мне тоже интересно... сказано четко
"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"