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

Вниз

Как возврат каретки заставить ввестись при работе с TWebBrowser   Найти похожие ветки 

 
ANB ©   (2007-03-13 15:45) [0]

Никак не докопаюсь - задаю вопросы в этом форуме через делфовый TWebBrowser. Однако в окошках редактирование нагло игнорится нажатие кнопки Enter и я не могу принудительно начать новую строку. Как это зачинить можно ?


 
Desdechado ©   (2007-03-13 15:59) [1]

Многострочный Edit сделай


 
easy ©   (2007-03-13 16:23) [2]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   WebBrowser1: TWebBrowser;
   procedure FormCreate(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure FormDeactivate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
   FOleInPlaceActiveObject: IOleInPlaceActiveObject;
   SaveMessageHandler: TMessageEvent;
   procedure MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.FormActivate(Sender: TObject);
begin
 SaveMessageHandler := Application.OnMessage;
 Application.OnMessage := MyMessageHandler;
end;

procedure TForm1.FormDeactivate(Sender: TObject);
begin
 Application.OnMessage := SaveMessageHandler;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Application.OnMessage := SaveMessageHandler;
 FOleInPlaceActiveObject := nil;
end;

procedure TForm1.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
var
 iOIPAO: IOleInPlaceActiveObject;
 Dispatch: IDispatch;
begin
 { exit if we don"t get back a webbrowser object }
 if WebBrowser1 = nil then
 begin
   Handled := False;
   Exit;
 end;

 Handled:=(IsDialogMessage(WebBrowser1.Handle, Msg) = True);

 if (Handled) and (not WebBrowser1.Busy) then
 begin
   if FOleInPlaceActiveObject = nil then
   begin
     Dispatch := WebBrowser1.Application;
     if Dispatch <> nil then
     begin
       Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
       if iOIPAO <> nil then
         FOleInPlaceActiveObject := iOIPAO;
     end;
   end;

   if FOleInPlaceActiveObject <> nil then
     if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
        ((Msg.wParam = VK_BACK) or (Msg.wParam = VK_LEFT) or (Msg.wParam = VK_RIGHT)) then
       //nothing - do not pass on Backspace, Left or Right arrows
     else
       FOleInPlaceActiveObject.TranslateAccelerator(Msg);
 end;
end;

end.


 
ANB ©   (2007-03-13 16:53) [3]


> easy ©   (13.03.07 16:23) [2]


Все понятно. Перехват и насильное проталкивание кнопок броузеру.
Спасибо.

А почему так происходило - подскажите кто-нибудь ?



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

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

Наверх




Память: 0.47 MB
Время: 0.046 c
9-1146847283
Vitalik__
2006-05-05 20:41
2007.04.01
DirectX заголовки


4-1163354066
vertal
2006-11-12 20:54
2007.04.01
com baud rate > 115200 - это фантастика?


2-1173447779
Provodnick
2007-03-09 16:42
2007.04.01
Ошибка при завершении консольного приложения


2-1173305867
ДжекиМайер
2007-03-08 01:17
2007.04.01
достучатся до свойств


2-1173124649
bagos
2007-03-05 22:57
2007.04.01
dbgrid