現在ボタンクリックでIEを起動するものを作っています。
表示されるIEが呼び出し元のフォームの下に出てしまいます。
それと表示されるサイズと場所を指定したいのですが、上手くいきません。
どなたか解決方法をご存知でしたらご教示お願いします。
ソースもバージョンもないので返答に困ってしまいますが・・・
私の環境でのテストPGは問題なくIEが上に出ます。
Delphi2007 + WinXP Pro SP3
めじなさん、
ご返答ありがとうございます。
サンプルソースを記述します。
動き的にはIEが立ち上がった後にdelphiのフォームが上に載る形になります。
当方もdelphi2007でWinXP Pro Sp3 です。
大変申し訳ございませんがよろしくお願いいたします。
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,ShellAPI;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
HTMLPath:String;
begin
HTMLPath:='http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=東京都港区港南2-15-2&z=16';
ShellExecute( Handle
,'open'
,'iexplore'
,PChar(HTMLPath)
,''
,SW_RESTORE );
end;
end.
ん?
目的の動作をしているような…
Form1の上にIEきてますよ。
ちなみに普通、上というと手前側、
つまり隠れていないものをさします。
>>動き的にはIEが立ち上がった後にdelphiのフォームが上に載る形になります。
こちらが目的でしょうか?
あと、フォームを扱う場合、親子の関係もあります
Form1とButton1の様な関係です。
その辺がはっきり知りたいです。
monaaさん
ご返信ありがとうございます。
自分のマシンでテストすると
ボタンをクリックした直後はIEがform1の上で立ち上がるのですが
IEが読み込み中になっている時に、form1の下に隠れてしまいます。
というか、form1がIE上に出てくるような感じ(どっちも同じことですが)です。
その原因が分からずに困っています。
マシンに依存するのかと思い、コンパイルして違うマシンで使用してみたところ、同じ現象が現れます・・・
どなたか同じ現象で悩んでおられる方はいらっしゃらないでしょうか?
また、IEの表示場所の座標指定は出来ますでしょうか?
よろしくお願いいたします。
以前に同じ悩みに遭遇しましたが↓で解決しました。
procedure TForm1.FormCreate(Sender: TObject);
begin
show;
end;
kaedaさん
ご返答ありがとうございます。
Form1がIEの下になって困っているのではなく、
Form1がIEの上になるので困っています。
皆さんは普通に呼び出したIEが呼び出し元のフォームの
上で開くのでしょうか?・・・・
なぜなんでしょう・・・凹みます↓
追記です。
この現象はIE7のみで起きるようです。
IE6だと問題ないのですが、IE7だとだめでした。
ShellExecuteのパラメータSW_RESTOREをSW_SHOWにしたらどうですか?
テストしてみました.
Windows XP(SP2) + Delphi2007 + IE6
(1) 新規にプロジェクトを作成
(2) BitBtnを配置
(3) よしぞうのBitBtn1Clickのコードをそのままコピペ
(4) コンパイルして実行(IDE上)
(5) Form2上のBitBtnをクリック(私の場合,理由があって,新規FormはForm2となる)
(6) IEが起動してForm2の上に表示され,Form2はIEの裏に隠れる
次に
Form2のFormStyleプロパティの値をfsStayOnTopにして実行
IEが起動してForm2の裏側に表示され,Form2はIEの上に表示されている.
次に,このプロジェクトを
Windows Vista + Delphi2007 + IE7
の環境にコピーして同様のテストを行いましたが,結果は同じでした.
なお,IEを起動しておいて実行した結果も同じです,
この場合,新たにIEが起動しました.
他になにか設定があるんでしょうか
う〜ん.わかりませんね.IE7だけで発生するんですよね.
参考までに.
Kaedeさん、Mr.XRAYさん
返信ありがとうございます。
パラメータに関しては
すべて試してみましたが、駄目でした。
IE7でだけ駄目って・・・・すでに標準になっているブラウザなのに・・・
あまり関係ないとは思うけど、
Application.MainFormOnTaskbarをFalseにしてみたらどうでしょう。
> また、IEの表示場所の座標指定は出来ますでしょうか?
特にShellExecuteにこだわる理由がなければ、
FindExecutableしてSTARTUPINFOを用意してCreateProcessで。
ttt さん
Application.MainFormOnTaskbar は関係ないようです・・・
う〜〜〜ん。。。難しいです。。。
ツイート | ![]() |