斎藤です。
連続の質問で大変申し訳ございませんが、よろしくお願いいたします。
DelphiXE5で作成したアプリにおいて、FormShowイベントでApplication.MainForm.Handle
を参照すると、0が返ってくる場合があります。
具体的には、
TAppFrm01 = class(TBaseForm)
・
・
procedure TAppFrm01.FormShow(Sender: TObject)
begin
inherited;
・
・
end;
procedure TBaseForm.FormShow(Sender: TObject)
begin
if Application.MainForm.Handle = Self.Handle then
別Exe起動(ShellExecute) // メインフォーム表示時のみ別Exeを起動する
end
ここの、Application.MainForm.Handle がなぜかゼロになってしまいます。
(Self.Handleは何かしらの値が入っている)
今までにわかっていること。
・同じ構成のアプリがいくつかあるのですが、この現象が発生するアプリと発生しないアプリ
があります。
・発生するアプリと発生しないアプリで、ステップ実行して違いを探ってみましたが、違い
を見つけることができませんでした。
・発生しないアプリでは、期待した動作が実現できています
(Application.MainForm.Handle と Self.Handle が同じ値である)
・if Application.MainForm.Handle=0 や if Application.MainForm = nil のようなこと
を記述するとAccessViolationで落ちます。
前回のスレッドでの質問のように、私が何か思い込みをしていて、気づかないだけなのかもしれ
ませんが、皆様のお知恵を拝借したく、よろしくお願いいたします。
斎藤 浩樹 / Hiroki-Saito
MLホームページ:
https://www.freeml.com/delphi-users
----------------------------------------------------------------------
Powered by freeml --
https://www.freeml.com/ --
------------------------------------------------------[freeml byGMO]--
あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------