ウェブブラウザを作っています。
そして今、ページが表示されたと同時(もしくは読み込み中)にEdit1の内容をそのページのアドレスに変える部分を作っているのですが、エラーがでてしまいます。
どのように記述すればよいのでしょうか?
ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。
http://delphi.sakura.vg/lesson11.html
どうかよろしくお願いします。
>ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。
リンク先のページにしたがってやってみましたが、問題なく動きました。
環境はDelphi 6 Pro、IE6、XP SP2です。
タイプミスとかではないでしょうか?
>ちなみにここに書いてあるものを試してみましたが、エラーが5個くらいでてしまい、実行不可能でした。
この紹介されているサイトはソースがありますよね。
私の環境だと、uses の SHDocVw_TLB をコメントアウトすると動作しました。
D2007Pro IE7 XPSP3です。
>Dさん
タイプミスでは無いとおもいます・・・
何度も確認しました。
>ウォレスさん
コメントアウトとは何をすればいいのでしょうか?
すいませんわからないです;;
エラーについでなんですが、書いてる時に左側に表示されるエラーで
・procedure TForm7.WebBrowser1NavigateComplete2(Sender: TObject
が書いてある行にて
「'TForm7'は'WebBrowser1NavigateComplete2'という名前のメンバーを含んでいません」
というメッセージが表示されます。(TForm7なので1を7に置き換えました。)
・const pDisp: IDispatch; var URL: OleVariant);
が書いてある行にて
「)が必要ですが;が見つかりました」
「=が必要ですが;が見つかりました」
「;が必要ですが)が見つかりました」
というメッセージが表示されます。
ちなみに環境は
Dehphi6Personal版 IE6 XP HE SP3
です。
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行がないのではないかなぁと。
そうでなければソースコードをここに貼り付けたほうが話が早いと思います。
ソースを貼り付けただけで
オブジェクトインスペクタのイベント設定してないだろ?
>「)が必要ですが;が見つかりました」
>「=が必要ですが;が見つかりました」
>「;が必要ですが)が見つかりました」
>というメッセージが表示されます。
>procedure TForm7.WebBrowser1NavigateComplete2(Sender: TObject
ま・さ・か TObjectの後のセミコロン(;)がないとか?
>Dさん
それも原因のひとつだったようです´・ω・
>KHE00221さん
すいません。オブジェクトインスペクタのイベント設定というのが何なのかわからないです;;
>みんみんさん
それが一番の原因だったようです!
エラーが一気に消えました。
しかし、左側に書いてる時に出てくるエラーでは何も出なくなったものの、コンパイル時にエラーがでました。
内容は、
26行目procedure WebBrowser1NavigateComplete2(Sender: TObject;にて
「E2065 forward または external 宣言された'TForm7.WebBrowser1Navigatecomplete2'が見つかりません」
というものです。
ソースはここに貼ると長くなってしまうのでテキストファイルにしてまとめました。どうかアドバイスお願いします。
何度もご迷惑をおかけして申し訳ございません;;
http://firestorage.jp/download/b370a2a8f6af745c646ddd8aa47dbcb68c64677b
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;
これではどうですか?
>すいません。オブジェクトインスペクタのイベント設定というのが何なのか>わからないです;;
オブジェクトインスペクタのイベント設定とは、
TWebBrowserのオブジェクトインスペクタのイベントタブで
OnNavigateComplete2の欄にイベント名"WebBrowser1NavigateComplete2"と
入力し、コンポーネントとイベントを関連つけることです。
ソースをコピペしてもイベントが関連付けられていない為に
>「E2065 forward または external 宣言された'TForm7.WebBrowser1Navigatecomplete2'が見つかりません」
のようなエラーが出るのだと思います。
>通りすがりさん
>みんみん
ありがとうございます!
無事解決できました!
最初に通りすがりさんの言う通りTFom7を追加したところエラーが出ることなくコンパイルすることができました。
しかし、アドレスの部分が変化しませんでした。
そこで加えてみんみんさんの説明に沿って関連付けたところ、無事表示されたページのアドレスが表示されるようになりました!
ありがとうございました。
他にもたくさんのアドバイスをくれた方々、ありがとうございました!
自分も人にいつかアドバイスできるように精進していきたいと思います。
ありがとうございました!
解決済にするのを忘れてました
大変失礼しました///
ツイート | ![]() |