Microsoft Fomsのコントロールを最前面へ移動するには?

解決


じゅん  2004-09-26 09:42:31  No: 116517

VB6のフォームで、VB6標準のコントロールとMicrosoft Formsのコントロールを一緒に使っていますが、Microsoft FormsのコントロールがVB6標準のコントロールの下に隠れてしまいます。Zオーダーを指定しても前面に出てきません。ダメなのでしょうか?


Say  2004-09-26 19:07:36  No: 116518

Microsoft Formsって、もしかして、
Microsoft Forms 2.0 Object Libraryのことでしょうか?

もし、そうなら
これは、VB6でなく、MS Officeのコントロールで、
VBでの動作に関してはMicrosoftが「保証しない」と明言していますし、
配布の際、ライセンスの問題も発生します。

可能なら使わないことをお奨めします。

トグルボタンを利用したいとか、
CommandButtonの文字色を変えたいとか程度なら、
CheckBoxなどで代替措置を講じることが可能ですし。


魔界の仮面弁士  2004-09-27 02:26:39  No: 116519

標準コントロールに関しては、
  ウィンドウを持つコントロール:
    TextBox
    CommandButton
    PictureBox
  ウィンドウレスコントロール:
    Label
    Shape
    Image
のように分類されますが、Forms 2.0のコントロールは、
このうちの ウィンドウレス コントロール に属します。

# ウィンドウレスなコントロールは、ウィンドウハンドル(hWnd)を
# 持たないので、これらには hWndプロパティ が存在しません。

> Zオーダーを指定しても前面に出てきません。ダメなのでしょうか?
結論から言えば、ZOrder では無理です。

ヘルプの「ZOrder メソッド」の項にもありますが、配置されている
オブジェクトは、上層、中層、下層 の3種類に分類されています。

そして、ウィンドウを持つコントロールは上層に配置されるのですが、
ウィンドウレスなコントロールに関しては中層に配置される事になります。

ZOrderは、層をまたがって表示を移動させる事はできませんので、
中層のコントロールは、上層コントロールより手前には配置できません。

一応、これらの中層コントロールを、PictureBoxやFrameなどの
「コンテナ」となりえる上層コントロールに載せておくことで、
この問題を回避するという手法もありますが……Sayさんが書かれて
いますように、Forms 2.0自体、あまり使わない方が良いでしょう。


じゅん  2004-09-29 19:06:49  No: 116520

回答ありがとうございました。
Microsoft Formsは使わずに、別の方法を考えてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加