Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
14-1085652153
Глеб
2004-05-27 14:02
2004.06.27
Жёсткий диск


1-1086946858
Valeri
2004-06-11 13:40
2004.06.27
Даты...


14-1086527131
Юрок
2004-06-06 17:05
2004.06.27
Создание справочной системы с помощью Html Work Shop


14-1086286974
Потеряв однажды ник
2004-06-03 22:22
2004.06.27
Сколько вам лет


9-1078057881
_dEMOn
2004-02-29 15:31
2004.06.27
Menu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский