Avatar billede xcc.dk Nybegynder
15. juni 2005 - 07:51 Der er 6 kommentarer og
1 løsning

Twebbrowser hjælp !

Jeg har lige problemer med min Webbrowser enhed ...
Når jeg surfer rundt i den virker den fint, med når jeg skriver en tekst i f.eks. google.dk og så trykker på  enter for at søge sker der intet ... nogle forslag til hvordan dette problem kan løses ? Jeg har oxo et problem med Copy funktionen ikke virker i min browser ... kunne disse 2 problemer måske hænge sammen ... ?
Avatar billede xcc.dk Nybegynder
15. juni 2005 - 08:39 #1
Jeg har prøvet med denne kode ...

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(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);
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;

men jeg får bare fejlen : [Error] Unit1.pas(51): Unsatisfied forward or external declaration: 'TForm1.MsgHandler' ??
Avatar billede stoney Nybegynder
15. juni 2005 - 10:40 #2
Avatar billede xcc.dk Nybegynder
15. juni 2005 - 11:00 #3
Den virker slet ikke !! for samme fejl .. Den MsgHandler eksistere ikke i min event på tFormen ... men det er meningen efter som man laver en private procedure ikke ??
Avatar billede xcc.dk Nybegynder
15. juni 2005 - 11:05 #4
PS jeg bruger delphi 5 enterprise ... det er ikke fordi den er for gammel vel ??
Avatar billede martinlind Nybegynder
15. juni 2005 - 11:15 #5
det kunne godt være en årsag :(
Avatar billede stone Forsker
15. juni 2005 - 13:26 #6
i delphi5 interprise har du et færdig eksempel

programmer\borland\delphi5\demo\coolstuf

prøv at kigge på den og evt lure nogle funktioner af....

skulle du bruge nogle funktioner fra....

http://www.swissdelphicenter.ch/en/tipsindex.php

prøv at søge på "browser" så får du mange funktioner  husk at læse comment hvor der kan være rettelser eller kommentarer til koden.
Avatar billede xcc.dk Nybegynder
20. juni 2005 - 09:35 #7
Det var fordi delphi 5 ikke kunne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester