태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


http://www.swissdelphicenter.ch/torry/showcode.php?id=1055

Problem:

  Web forms that have multiline text boxes and/or Submit buttons 
do not
  
respond to the Enter key when displayed on a TWebbrowser.
  Also when browsing local folders, some keys don't respond.

  How to solve it:


unit Unit1;

interface

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

type
  
TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  
private
    
{ Private declarations }
    
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
  
public
    
{ Public declarations }
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormDestroy(Sender: TObject);
begin
  
FOleInPlaceActiveObject := nil;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  
Application.OnMessage := MsgHandler;
end;

procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
const
  
StdKeys = [VK_BACK, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT];
var IOIPAO: IOleInPlaceActiveObject;
  Dispatch: IDispatch;
begin
  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 in StdKeys) 
then
        
//nothing  -  do not pass on Backspace, Left, Right, Up, Down arrows
      
else FOleInPlaceActiveObject.TranslateAccelerator(Msg);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  
Webbrowser1.Navigate('www.SwissDelphiCenter.ch');
end;

initialization
  
OleInitialize(nil);

finalization
  
OleUninitialize
end.

'Blog Life > Gentlecat's Job' 카테고리의 다른 글

advstring Grid 체크박스 넣기  (0) 2008.11.19
폼 얼지 않게 sleep 주기  (0) 2008.11.19
파일복사  (1) 2008.11.19
파일삭제 함수  (0) 2008.11.19
grid 첫 데이터 선택하기  (0) 2008.11.19
edit 숫자만 입력받기  (0) 2008.11.19
TWebBrowser 로드 완료 체크  (0) 2008.11.19
TWebBrowser 엔터키 먹게 하기  (0) 2008.11.19
Grid 특정셀 색깔 or 폰트칼라  (0) 2008.11.19
grid 드래그 카피하기  (0) 2008.11.19
delphi2007 에서 suipack skin 의 모양이 틀어질때  (0) 2008.11.19

+ Recent posts