Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
в TWebBrowser после открытия документа нужно иметь возможность ср Найти похожие ветки
← →
Е-Моё имя © (2003-07-28 11:43) [0]азу прокручивать текст мышом, без клика. Подскажите, как ентова добицца - уже запарился копаться в многочисленных интерфейсах(((
← →
Vlad Oshin © (2003-07-28 11:54) [1]ScrollBy
← →
Vlad Oshin © (2003-07-28 11:58) [2]обшибочка :) Послать надо сообщение, что-то типа WM_Scroll
← →
Е-Моё имя © (2003-07-28 12:04) [3]WM_VSCROLL что ли?
а где взять хэндл скроллбара браузера?
← →
Е-Моё имя © (2003-07-28 14:08) [4]неужто никто не сталкивался с такой задачей? ((((
← →
nikkie © (2003-07-28 16:13) [5]если я правильно понял проблему, то наверное фокус там не стоит
← →
Е-Моё имя © (2003-07-28 17:06) [6]совершенно ДА
если поставить туда фокус одноименным методом, браузер начинает обрабатывать нажатия клавы, а вот прокручивать колесом не дает все равно
только после клика в документе.
← →
nikkie © (2003-07-28 17:58) [7]У меня таких проблем с TWebBrowser не наблюдается. Попробуй сделать маленький тестовый проект, может это наведенный эффект. Какая у тебя версия IE?
← →
Е-Моё имя © (2003-07-28 18:48) [8]6-я версия
делаю загрузку из строки
HTMLDocument.Write(PSafeArray(TVarData(V).VArray));
кручу колесом в окне - эффекта нет
пока не ткнешь, не прокручиваецца
← →
Е-Моё имя © (2003-07-28 19:00) [9]делал тестовый проект - без разницы, после загрузки или со страницы, или вручную из строки - не ловит колесо(
← →
nikkie © (2003-07-28 21:22) [10]новый проект, на форме WebBrowser и Button.
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: Variant;
begin
WebBrowser1.Navigate("about:blank");
WebBrowser1.SetFocus;
Doc := WebBrowser1.DefaultInterface.Document;
Doc.Write("abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>abc<BR>");
end;
скролируется нормально. IE6.
← →
Е-Моё имя © (2003-07-29 11:56) [11]методом проб и ошибок выяснено:
при таком раскладе
WEBBROWSER1.Navigate("about:blank");
while WEBBROWSER1.ReadyState<>READYSTATE_COMPLETE do
( "about:blank") методом проб и ошибок выяснено:
при таком раскладе
WEBBROWSER1.Navigate("about:blank");
while WEBBROWSER1.ReadyState<>READYSTATE_COMPLETE do
Application.ProcessMessages;
WebBrowser1.SetFocus;
не работает
при таком
WEBBROWSER1.Navigate("about:blank");
WebBrowser1.SetFocus;
while WEBBROWSER1.ReadyState<>READYSTATE_COMPLETE do
Application.ProcessMessages;
работает как надо...
еще бы кто объяснил, почему ТАК?
← →
nikkie © (2003-07-29 15:16) [12]Раньше встречал подобный эффект, но не с WebBrowser, а когда непосредственно хостировался MSHTML-документ. Писалось это тогда на C++/ATL, осталось ощущение, что проблема состоит в отсутствии активации ActiveX документа. Такой эффект с WebBrowser увидел впервые, когда попробовал приведенный код. Причем перенос строчки WebBrowser1.SetFocus проблемы полностью не решает, поскольку после повторного вызова этого кода, ни стрелками, ни колесом текст не скроллируется.
Все решилось, когда заменил WebBrowser на EmbeddedWB ( http://www.euromind.com/iedelphi/ ) - у него есть метод SetFocusToDoc. Вот, собственно, и исходник этого метода, который и подтвержает мое ощущение про активацию.
procedure TEmbeddedWb.SetFocusToDoc;
begin
if Document <> nil then
with {$IFDEF VER120}Application_{$ELSE}Application{$ENDIF} as IOleobject do
( OLEIVERB_UIACTIVATE, nil, Self, 0, Handle, GetClientRect)Раньше встречал подобный эффект, но не с WebBrowser, а когда непосредственно хостировался MSHTML-документ. Писалось это тогда на C++/ATL, осталось ощущение, что проблема состоит в отсутствии активации ActiveX документа. Такой эффект с WebBrowser увидел впервые, когда попробовал приведенный код. Причем перенос строчки WebBrowser1.SetFocus проблемы полностью не решает, поскольку после повторного вызова этого кода, ни стрелками, ни колесом текст не скроллируется.
Все решилось, когда заменил WebBrowser на EmbeddedWB ( http://www.euromind.com/iedelphi/ ) - у него есть метод SetFocusToDoc. Вот, собственно, и исходник этого метода, который и подтвержает мое ощущение про активацию.
procedure TEmbeddedWb.SetFocusToDoc;
begin
if Document <> nil then
with {$IFDEF VER120}Application_{$ELSE}Application{$ENDIF} as IOleobject do
DoVerb(OLEIVERB_UIACTIVATE, nil, Self, 0, Handle, GetClientRect);
end;
← →
Е-Моё имя © (2003-07-29 15:39) [13]>>проблемы полностью не решает
да, у меня это работало только в тестовом проекте
щас пытаюсь адаптировать этот код к своему приложению
о результатах сообщу)
← →
Е-Моё имя © (2003-07-29 18:28) [14]не получается адаптировать...
надо ставить EmbeddedWB...
← →
Е-Моё имя © (2003-07-30 17:16) [15]думал сделать не создавая наследника - так не получается
наследника сделал, добавил обработку - все нормально, Embedded пока можно не ставить ;)
спасибо за помощь!
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.019 c