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

Вниз

"Внутренние" события   Найти похожие ветки 

 
yahaha   (2006-05-09 16:45) [0]

Doc: IHTMLDocument2;
...
Doc.onclick:=...
Doc.onmousedown:=...


А как оформить события в картинках, таблицах и т.п.? Например:

- браузер в режиме DesignMode="On", я подвожу мышь к картинке, нажимаю кнопку, картинка выделяется.
- точно так же выделяю таблицу.

В обоих случаях событие Doc.onmousedown ничего не даёт. Он срабатывает, но кроме него есть ещё какое-то событие...
Вопрос: какое?


 
easy ©   (2006-05-10 09:13) [1]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtrls, SHDocVw;

type
 TForm1 = class(TForm)
   WebBrowser1: TWebBrowser;
   procedure WebBrowser1BeforeNavigate2(Sender: TObject;
     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
     Headers: OleVariant; var Cancel: WordBool);
   procedure FormCreate(Sender: TObject);
   procedure WebBrowser1DocumentComplete(Sender: TObject;
     const pDisp: IDispatch; var URL: OleVariant);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
   FNewWndProc, FOldWndProc: Pointer;
   h: HWND;
   Defined: boolean;
   procedure NewWndProc(var Message: TMessage);
   procedure DefineWndProc;

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DefineWndProc;
begin
 h := GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD); // This was level 1
 FNewWndProc := Classes.MakeObjectInstance(NewWndProc);
 FOldWndProc := Pointer(GetWindowLong(h, GWL_WNDPROC));
 SetWindowLong(h, GWL_WNDPROC, Longint(FNewWndProc));
 Defined := true;
end;

procedure TForm1.NewWndProc(var Message: TMessage);
var
 Doc, elem: oleVariant;
begin
 case Message.Msg of
   WM_LBUTTONDOWN: begin
       Doc := WebBrowser1.OleObject.document;
       elem := LowerCase(Doc.elementFromPoint(Message.LParamLo,
         Message.LParamHi).tagName);
       if (elem = "img") or (elem = "td") or (elem = "table") then
         exit;
     end;
 end;
 Message.Result := CallWindowProc(FOldWndProc, h, Message.Msg,
   Message.WParam, Message.LParam);
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
begin
 if Defined then
   SetWindowLong(h, GWL_WNDPROC, Longint(FOldWndProc));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 WebBrowser1.Navigate("http://yandex.ru");
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
 DefineWndProc;
 WebBrowser1.OleObject.document.DesignMode := "On";
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if Defined then
   SetWindowLong(h, GWL_WNDPROC, Longint(FOldWndProc));
end;

end.



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

Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.011 c
4-1143037786
Arazel
2006-03-22 17:29
2006.06.18
ListBox под WinApi это не проблема! А вот со скинами это слабо!


15-1148124508
Другой
2006-05-20 15:28
2006.06.18
Может ли один программист создать Информационную Систему?


1-1147284039
Андрей2500
2006-05-10 22:00
2006.06.18
быстрый поиск в Stringgrid


15-1148465697
konda
2006-05-24 14:14
2006.06.18
Перегружается компьютер при небольшом толчке системника.


1-1147460541
Mao
2006-05-12 23:02
2006.06.18
подскажите решение клиент/сервер





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