VB6のフォームで、VB6標準のコントロールとMicrosoft Formsのコントロールを一緒に使っていますが、Microsoft FormsのコントロールがVB6標準のコントロールの下に隠れてしまいます。Zオーダーを指定しても前面に出てきません。ダメなのでしょうか?
Microsoft Formsって、もしかして、
Microsoft Forms 2.0 Object Libraryのことでしょうか?
もし、そうなら
これは、VB6でなく、MS Officeのコントロールで、
VBでの動作に関してはMicrosoftが「保証しない」と明言していますし、
配布の際、ライセンスの問題も発生します。
可能なら使わないことをお奨めします。
トグルボタンを利用したいとか、
CommandButtonの文字色を変えたいとか程度なら、
CheckBoxなどで代替措置を講じることが可能ですし。
標準コントロールに関しては、
ウィンドウを持つコントロール:
TextBox
CommandButton
PictureBox
ウィンドウレスコントロール:
Label
Shape
Image
のように分類されますが、Forms 2.0のコントロールは、
このうちの ウィンドウレス コントロール に属します。
# ウィンドウレスなコントロールは、ウィンドウハンドル(hWnd)を
# 持たないので、これらには hWndプロパティ が存在しません。
> Zオーダーを指定しても前面に出てきません。ダメなのでしょうか?
結論から言えば、ZOrder では無理です。
ヘルプの「ZOrder メソッド」の項にもありますが、配置されている
オブジェクトは、上層、中層、下層 の3種類に分類されています。
そして、ウィンドウを持つコントロールは上層に配置されるのですが、
ウィンドウレスなコントロールに関しては中層に配置される事になります。
ZOrderは、層をまたがって表示を移動させる事はできませんので、
中層のコントロールは、上層コントロールより手前には配置できません。
一応、これらの中層コントロールを、PictureBoxやFrameなどの
「コンテナ」となりえる上層コントロールに載せておくことで、
この問題を回避するという手法もありますが……Sayさんが書かれて
いますように、Forms 2.0自体、あまり使わない方が良いでしょう。
回答ありがとうございました。
Microsoft Formsは使わずに、別の方法を考えてみます。
ツイート | ![]() |