喫茶XRAYトップページ

[スレッド全体
]

[7931] 子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 15:34:39 sato
▼ 皆様
MainFormから呼び出された子Formの操作によって所定のExcellファイルを開き
MainFormに表示されている数値を、そのファイルに転記しようとしています。
その際、MainFormが一番下、その上にExcell表、最後に子Formといった順序
で表示させたいのですが、(内容の確認用にMainFormは常に表示)
MainFormだけのときはマスタのサンプル400のように、fsStayOnTopで常にExcellの
上にFormが来るのですが、子Formを呼び出すと、子FormをfsStayOnTopにしても、
MainFormに対しては子Formが常に上に来るのですが、ExcellがActiveになると
その下に隠れてしまいます。
子Formに対してSetWindowPosを行っても変わらないように見えます。
MainForm→Excell表→子Form の順番にする方法はないでしょうか。
よろしくお願いいたします。
環境は、いまだに、Delphi7+Win7 です。


[7932] Re:子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 16:40:51 Mr.XRAY
▼ satoさん

> MainForm→Excell表→子Form の順番にする方法はないでしょうか。
基本的にはできません(Delphi のバージョンとは関係なく.Windows の仕様です).
Excel -> MainForm -> 子Form
ならできます.

また,SDI スタイルのアプリであればできます.
[710][03_SDI スタイルのサンプルプログラムの仕様]
http://mrxray.on.coocan.jp/Delphi/plSamples/710_SDIStyleApp.htm#03

SDI スタイルというわけにはいかない思いますので,
実際問題としては難しいですね.


[7934] Re2:子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 17:29:42 sato
▼ Mr.XRAYさん

ありがとうございます。やっぱり無理ですか。ショボン。
少し探していたら、5年ほど前にも同じようなことを考えていた人がいました。
その時に親切な人が手ほどきされていましたので、さっそくいただく事にしました。
http://www.papy.in/bbs/delphi/200911/09110017.html
ただ、子FormがActiveになった時に、親も連れてくるので、Excellが隠れていまい
やや不便なため、子Formに置いたボタンで親のvisible⇔not visible をトグルする
事で逃げる事にしました。(子を閉じたとき親がいないと大変なので気を付けます)

涸沢の紅葉はそろそろ始まっていますかね。
では、コーヒとお土産ご馳走様でした。


[7935] Re3:子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 18:17:30 Mr.XRAY
> 涸沢の紅葉はそろそろ始まっていますかね。

いや,まだでしょう.中旬以降ですね.
どこかまた出かける予定が? いいなぁ.
是非遭難してください.じゃなくて,遭難しないように祈っています (^^;


で,先の件ですが,子フォームのアイコンがタスクバーに表示されても
いいのであれば,SDI スタイルのアプリと同じような方法が使えます.

[127] [10_タスクバーへフォーム別のアイコンを表示]
http://mrxray.on.coocan.jp/Delphi/plSamples/127_FormSystemMenuETC.htm#10

う〜む.結局は SDI アプリと同じか.
Windows の仕様上,別タスクじゃないと,Z オーダ制御はできないようですし.
Delphi 7 だと,[712_タスクバーへの追加・削除とプログレス表示] 使えないし.
http://mrxray.on.coocan.jp/Delphi/plSamples/712_Taskbar_Progress.htm


図は,[712] [10] のサンプル EXE を起動して,Excel を起動して操作した結果
From1 と 子フォームの Form2 の Z オーダを独立して設定可能


[7936] Re4:子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 18:32:25 Mr.XRAY
> Delphi 7 だと,[712_タスクバーへの追加・削除とプログレス表示] 使えないし.

一応,Delphi 2009 以前でも使用可能なように,plTaskbarList_TLB.pas という
ユニットを添付しています.
ただし,Delphi 2006 以前では,[秘密のウインドウ] に対処したコードも必要です.
詳しくは,記事と記事の中のリンクを見てください.

[02_アクティブなフォームだけをタスクバーに表示  -  ITaskbarList]
http://mrxray.on.coocan.jp/Delphi/plSamples/712_Taskbar_Progress.htm#02


[7937] Re5:子Formを常に手前に表示するには返信 削除
2014/9/11 (木) 18:52:33 Mr.XRAY
> [秘密のウインドウ] に対処したコードも必要です.

これ,どなたかがユニットで提供していたと思うのですが,忘れてしまいました.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82