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

Вниз

Два глюка вэб-браузера Кто знает как от них избавиться ?   Найти похожие ветки 

 
Кен ©   (2003-09-17 01:17) [0]

Если кто хочет, то может скачать готовый пример ( http://triponavtika.narod.ru/gluki.zip ) Кто не хочет может набить код сам.

На форму кидается
WebBrowser1: TWebBrowser
Edit1: TEdit
Timer1: TTimer

В Unit1 пишем :

var
Doc1 : Variant;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("about:blank");
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
WebBrowser1.Refresh2;
Doc1 := WebBrowser1.DefaultInterface.Document;
Doc1.write("<html><HEAD>"
+ "<META http-equiv=content-type content="text/html; charset=windows-1251">"
+ "</HEAD><body bgcolor=#FFFFCF>"
+ #13#10 + Edit1.Text +"</body></html>");
end;


Глюков два.

Глюк 1
Проблема в том, что если кликнуть сначала на окно Вэб-браузера, а потом обратно на Edit1, то как только сработает таймер, то фокус опять уйдёт на вэб-браузер и будет уходить на него постоянно, при каждом последующем срабатывании таймера.

Глюк 2
Если нажать на вэб-браузере правой кнопкой мыши и сделать просмотр в виде ХТМЛ, то будет показываться текст в юникоде, не смотря на то, что напрямую прописывается кодировка windows-1251 .

Как обезглючить ? Кто нибудь знает ?

Постю в Потрепаться только потому, что здесь больше народу.


 
Кен ©   (2003-09-17 06:09) [1]

Мастера в раздумьях ?


 
Думкин ©   (2003-09-17 06:18) [2]

Дрыхнут все еще, полуношник.


 
Кен ©   (2003-09-18 01:08) [3]

Прошли сутки. А между тем вопрос с фокусом вэб-браузера очень старый. Похоже, что никто не знает как его решить.


 
Adder ©   (2003-09-18 01:43) [4]

А спамить не надо


 
Кен ©   (2003-09-19 01:23) [5]

Мастера бессильны перед проблемой.

Что любопытно решить проблему фокуса не помогает даже принудительное Edit1.SetFocus; в конце процедуры.


 
Е-Моё имя ©   (2003-09-19 01:25) [6]

ах, оставьте...
ибо сказано:
Духовное знание есть единственное, что может уничтожить наши несчастья навсегда. Всякое другое знание удовлетворяет наши нужды лишь временно. Наивысшая помощь есть та, которая укрепляет нас духовно; за ней идет помощь уму, а уже затем физическая.
;-))))))


 
Кен ©   (2003-09-19 07:16) [7]

Хоть бы кто по делу чего написал.


 
Е-Моё имя ©   (2003-09-19 09:23) [8]


> [7] Кен © (19.09.03 07:16)

да я ш по делу и написал
зачем тебе от глюков избавляца? Духовное знание есть единственное, что может уничтожить наши несчастья навсегда.


 
Ihor Osov'yak ©   (2003-09-19 10:12) [9]

2 Кен

Да как тебе сказать.. Говорили же и не раз - ответят, если вопрос стандартный, или уже решался.. Если вопрос специфический - то если на решение уйдет минут пять-десять, или уж очень заинтересовал..

Зы. Хотя и WB и немного моя специализация, но во первых - не решал, во вторых - не заинтересовал, в третьих - имею подозрение, что на решение уйдет больше, чем 15 минут.

Хотя по п1 кто тебе мешает запоминать сфокусированный елемент, а потом возвращать фокус ему?


 
Кен ©   (2003-09-20 01:16) [10]


> Е-Моё имя © (19.09.03 09:23) [8]
> Духовное знание есть единственное, что может уничтожить
> наши несчастья навсегда.

Я бы предпочёл уничтожать несчастья лишним миллионом долларов.


> Ihor Osov"yak © (19.09.03 10:12) [9]
> Хотя по п1 кто тебе мешает запоминать сфокусированный елемент,
> а потом возвращать фокус ему?

Не работает.
Вот так вот не работает :
procedure TForm1.Timer1Timer(Sender: TObject);
var
h1 : hWnd;
begin
h1 := Windows.GetFocus;
WebBrowser1.Refresh;
Doc1.write("<html><HEAD>"
+ "<META http-equiv=content-type content="text/html; charset=windows-1251">"
+ "</HEAD><body bgcolor=#FFFFCF>"
+ #13#10 + Edit1.Text +"</body></html>");
Windows.SetFocus(h1);
end;

Если можно сделать как то подругому, то как ?


 
Кен ©   (2003-09-21 04:18) [11]

А хотя бы идеи какие нибудь есть у мастеров на этот счёт ?


 
Кен ©   (2003-09-22 01:32) [12]

Идей нет ?


 
Кен ©   (2003-09-26 01:19) [13]

Совсем нет идей ?


 
Igorek ©   (2003-09-26 01:47) [14]

Есть идея попробовать сообщения для установки фокуса. Возможно он устанавливается на Веб браузер по тому же сообщению. Тогда надо или очистить стек перед установкой фокуса или послать (PostMessage) на установку.

Вообще странно. Ты что не можешь оттрасировать это дело?


 
Кен ©   (2003-09-26 07:36) [15]


> Igorek © (26.09.03 01:47) [14]
> Есть идея попробовать сообщения для установки фокуса.

Я пробовал вот так :
SendMessage(WebBrowser1.Handle, WM_KILLFOCUS, 0, 0);
SendMessage(Edit1.Handle, WM_SETFOCUS, 0, 0);

Но это не помогло.


> Тогда надо или очистить стек перед установкой фокуса или
> послать (PostMessage) на установку.

А как очищают стэк ? Как правильно послать PostMessage ?


> Вообще странно. Ты что не можешь оттрасировать это дело?

А как ?


 
Verg ©   (2003-09-26 08:55) [16]


> SendMessage(Edit1.Handle, WM_SETFOCUS, 0, 0);


Говорят же тебе - PostMessage, а не SendMessage

Сам же WB "закидывается" WM_SETFOCUS при исполнении той процедуры.
Ты вызываешь SendMessage - фокус немедленно переходит на Edit1, но! в очереди сообщений торчит Wb-шный SETFOCUS, которй и вернет фокус на WB.


 
Igorek ©   (2003-09-26 22:30) [17]


> > Вообще странно. Ты что не можешь оттрасировать это дело?
>
> А как ?

Очень просто. Пишешь обработчики на WM_SETFOCUS, ставишь в них брейкпоинты. Ставишь также брейкпоинты в точках, где меняешь фокус тем или иным способом. Запускаешь и видишь что происходит. Стек вызовов также смотри в момент остановки.



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

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

Наверх




Память: 0.51 MB
Время: 0.02 c
1-51336
Joni
2003-10-06 00:01
2003.10.16
Ошибка при компиляции


3-51150
www
2003-09-23 19:08
2003.10.16
Не запускается COM-сервер


14-51525
Джордж Буш
2003-09-25 18:30
2003.10.16
Ирак. Исповедь.


14-51507
kaif
2003-09-25 04:01
2003.10.16
что такое мудрость?


8-51356
Charly
2003-06-16 15:48
2003.10.16
TBitMap и буфер обмена