表示しているページのアドレスをEdit1に入れるには?

解決


panache  2009-03-19 08:43:04  No: 33690

ウェブブラウザを作っています。
そして今、ページが表示されたと同時(もしくは読み込み中)にEdit1の内容をそのページのアドレスに変える部分を作っているのですが、エラーがでてしまいます。
どのように記述すればよいのでしょうか?

ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。
http://delphi.sakura.vg/lesson11.html

どうかよろしくお願いします。


D  2009-03-19 11:12:57  No: 33691

>ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。

リンク先のページにしたがってやってみましたが、問題なく動きました。
環境はDelphi 6 Pro、IE6、XP SP2です。
タイプミスとかではないでしょうか?


ウォレス  2009-03-19 18:15:14  No: 33692

>ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。

この紹介されているサイトはソースがありますよね。
私の環境だと、uses の SHDocVw_TLB  をコメントアウトすると動作しました。

D2007Pro IE7 XPSP3です。


panache  2009-03-20 02:20:16  No: 33693

>Dさん
タイプミスでは無いとおもいます・・・
何度も確認しました。
>ウォレスさん
コメントアウトとは何をすればいいのでしょうか?
すいませんわからないです;;

エラーについでなんですが、書いてる時に左側に表示されるエラーで
・procedure TForm7.WebBrowser1NavigateComplete2(Sender: TObject
が書いてある行にて
「'TForm7'は'WebBrowser1NavigateComplete2'という名前のメンバーを含んでいません」
というメッセージが表示されます。(TForm7なので1を7に置き換えました。)

・const pDisp: IDispatch; var URL: OleVariant);
が書いてある行にて
「)が必要ですが;が見つかりました」
「=が必要ですが;が見つかりました」
「;が必要ですが)が見つかりました」
というメッセージが表示されます。

ちなみに環境は
Dehphi6Personal版 IE6 XP HE SP3
です。


D  2009-03-20 04:22:10  No: 33694

procedure WebBrowser1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);

という行がTForm7の宣言のところで抜けているのではないかなぁと。

unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin, OleCtrls, SHDocVw, ImgList;

type
  TForm7 = class(TForm)
    WebBrowser1: TWebBrowser;
    ToolBar1: TToolBar;
    BackButton: TToolButton;
    ForwardButton: TToolButton;
    HomeButton: TToolButton;
    RefleshButton: TToolButton;
    StopButton: TToolButton;
    Edit1: TEdit;
    NavigateButton: TToolButton;
    ImageList1: TImageList;
    procedure BackButtonClick(Sender: TObject);
    procedure ForwardButtonClick(Sender: TObject);
    procedure HomeButtonClick(Sender: TObject);
    procedure RefleshButtonClick(Sender: TObject);
    procedure StopButtonClick(Sender: TObject);
    procedure NavigateButtonClick(Sender: TObject);
    procedure WebBrowser1CommandStateChange(Sender: TObject;
      Command: Integer; Enable: WordBool);
    procedure WebBrowser1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure WebBrowser1TitleChange(Sender: TObject;
      const Text: WideString);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

こういう感じになるはずと思うのですが、privateの上の

    procedure WebBrowser1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);

という2行がないのではないかなぁと。

そうでなければソースコードをここに貼り付けたほうが話が早いと思います。


KHE00221  2009-03-20 23:02:30  No: 33695

ソースを貼り付けただけで
オブジェクトインスペクタのイベント設定してないだろ?


みんみん  2009-03-21 06:09:35  No: 33696

>「)が必要ですが;が見つかりました」
>「=が必要ですが;が見つかりました」
>「;が必要ですが)が見つかりました」
>というメッセージが表示されます。

>procedure TForm7.WebBrowser1NavigateComplete2(Sender: TObject

ま・さ・か TObjectの後のセミコロン(;)がないとか?


panache  2009-03-23 05:35:05  No: 33697

>Dさん
それも原因のひとつだったようです´・ω・
>KHE00221さん
すいません。オブジェクトインスペクタのイベント設定というのが何なのかわからないです;;
>みんみんさん
それが一番の原因だったようです!
エラーが一気に消えました。

しかし、左側に書いてる時に出てくるエラーでは何も出なくなったものの、コンパイル時にエラーがでました。
内容は、
26行目procedure WebBrowser1NavigateComplete2(Sender: TObject;にて
「E2065 forward または external 宣言された'TForm7.WebBrowser1Navigatecomplete2'が見つかりません」
というものです。

ソースはここに貼ると長くなってしまうのでテキストファイルにしてまとめました。どうかアドバイスお願いします。
何度もご迷惑をおかけして申し訳ございません;;
http://firestorage.jp/download/b370a2a8f6af745c646ddd8aa47dbcb68c64677b


通りすがり  2009-03-23 05:54:53  No: 33698

procedure WebBrowser1NavigateComplete2(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
  Edit1.Text :=WebBrowser1.LocationURL;
end;

〜上記に「TForm7.」を追加して変更〜

procedure TForm7.WebBrowser1NavigateComplete2(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
  Edit1.Text :=WebBrowser1.LocationURL;
end;

これではどうですか?


みんみん  2009-03-23 06:36:56  No: 33699

>すいません。オブジェクトインスペクタのイベント設定というのが何なのか>わからないです;;

オブジェクトインスペクタのイベント設定とは、

TWebBrowserのオブジェクトインスペクタのイベントタブで
OnNavigateComplete2の欄にイベント名"WebBrowser1NavigateComplete2"と
入力し、コンポーネントとイベントを関連つけることです。

ソースをコピペしてもイベントが関連付けられていない為に
>「E2065 forward または external 宣言された'TForm7.WebBrowser1Navigatecomplete2'が見つかりません」
のようなエラーが出るのだと思います。


panache  2009-03-25 06:07:37  No: 33700

>通りすがりさん
>みんみん
ありがとうございます!
無事解決できました!

最初に通りすがりさんの言う通りTFom7を追加したところエラーが出ることなくコンパイルすることができました。
しかし、アドレスの部分が変化しませんでした。
そこで加えてみんみんさんの説明に沿って関連付けたところ、無事表示されたページのアドレスが表示されるようになりました!
ありがとうございました。

他にもたくさんのアドバイスをくれた方々、ありがとうございました!
自分も人にいつかアドバイスできるように精進していきたいと思います。

ありがとうございました!


panache  2009-03-25 06:10:45  No: 33701

解決済にするのを忘れてました
大変失礼しました///


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加