BUG: Z オーダー動作別 (.OCX) を OLE コントロールを使用

文書翻訳 文書翻訳
文書番号: 145731 - 対象製品
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

現在、OLE (.OCX) コントロールになっているコントロールの z オーダー動作は、Windows 用の Microsoft Visual Basic 3. 0 の同等.VBX コントロールに対してが異なる。 OLE (.OCX) コントロールが重なっていない (の上に表示されます)、ウィンドウ コントロールはデザイン時に、1 つの PictureBox コントロールと同様です。 この動作の z オーダーの変更は、Visual Basic 3. 0 アプリケーションは Visual Basic 4. 0 にインポートされ、.VBX コントロールは OLE (.OCX) コントロールにアップグレードされる場合に特に顕著になります。 オーバーラップ ウィンドウ コントロールをコントロールは、そのコントロールの下にようになりました。 デザイン時に、[編集] メニューの [「にするフロントエンド」コマンドを使用は無効です。 ランタイムほとんど OLE (.OCX) にもコントロールは、ウィンドウのコントロールの下には。 方法、コントロールがデザイン時に重複した、どんな実行時に常に軽量コントロールの上に、通常はウィンドウのコントロールの下に。 デザイン時に軽量コントロールの下がどちらかの OLE (.OCX) コントロールの場合特に混乱を招くです。

原因

OLE (.OCX) のほとんどのコントロールのデザインの制限、ためこれらのコントロールで、ウィンドウ ハンドル (hWnd) デザイン時にありません。 これは、デザイン時の処理を.VBX コントロール、ウィンドウを持つ異なるです。 .VBX と OLE の両方 (.OCX) コントロールは実行時にウィンドウ ハンドルを持ちます。 したがって OLE (.OCX) コントロールの z オーダーの動作は、OLE (.OCX) 軽量の (ウィンドウではない) コントロールのようにデザイン時と実行時にウィンドウのコントロールの動作を制御するため、.VBX コントロールの z オーダーの動作と一致しません。 さらにいくつかのコントロールは実行時、自体の上部または他のウィンドウのコントロールの下に強制することによって、ウィンドウのコントロール間の相対的な z オーダーを正しく保持しません。

回避策

Z オーダー メソッドで、実行時に OLE (.OCX) コントロールの Z オーダーを設定明示的にします。 デザイン時にこの問題を解決する方法は現在ありません。

状況

Microsoft は、この資料の冒頭に記載した Microsoft 製品にかかわる問題であることを確認済みです。 詳細がわかりしだい、「サポート技術情報」 (Microsoft Knowledge Base) に掲載します。

詳細

次 OLE (.OCX) 軽量の (ウィンドウではない) コントロールのようにデザイン時に Visual Basic 4. 0 での動作を制御する:
AniPushButton      MAPIMessages      Slider
CommonDialog       MAPISession       SpinButton
CrystalReport      MaskEdBox         SSCheck
DBCombo            MhState           SSCommand
DBGrid             MMControl         SSOption
DBList             MSComm            SSRibbon
Graph              MSRDC             StatusBar
Grid               Outline           TreeView
ImageList          PictureClip
ListView           ProgressBar
				
: [OLE コンテナー コントロールが Visual 基本 4. 0 で軽量コントロール。

DBGrid コントロールは、実行時にウィンドウ コントロールの下に置くことが z オーダー メソッドを使用できません。 DBGrid コントロールの上に配置するのにには、ウィンドウのコントロールの z オーダー メソッドを使用します。

16 ビット グラフ コントロールは実行時にウィンドウのコントロールの上に自体を配置します。 その z メソッドを使用して他のウィンドウのコントロールの下に配置をします。

32 ビット MaskEdBox コントロール配置自体 (前述の DBGrid コントロール) の以外のウィンドウのコントロールの上に実行時にします。 その z メソッドを使用して他のウィンドウのコントロールの下に配置をします。

ツール バー コントロール自体 (前述の DBGrid コントロール) の以外のウィンドウのコントロールの上に配置ランタイムされます。 その z メソッドを使用して他のウィンドウのコントロールの下に配置をします。

問題を再現する手順

  1. Visual Basic の開始するか、Visual Basic が既に実行されている場合 [ファイル] メニューの [(Alt キーを押し、F、N) の新しいプロジェクト] をクリックします。 デフォルトで Form1 が作成されます。
  2. 下 diagrammed 位置表示 ORDER 内 Form1 に次のコントロールに置き: Command1、Command2 を Command3、Command4、Command5、Command6、Label1、Grid1 と Picture1:
            ------------------------------
           | --------  --------  -------- |
           ||Command1||Command3||Command5||
           | --------  --------  -------- |
           | --------  --------  -------- |
           ||Command2||Command4||Command6||
           | --------  --------  -------- |
           |  --------------              |
           | |Label1        |             |
           | |           ---------------  |
           | |          |Picture1       | |
           | |   -------|               | |
           | |  |Grid1  |               | |
           |  --|       |               | |
           |    |        ---------------  |
           |    |                |        |
           |     ----------------         |
            ------------------------------
    						
  3. Form1 に次のコードを挿入:
       Private Sub Form_Load()
           Command1.Caption = "Bring to Front - Label1"
           Command2.Caption = "Send to Back - Label1"
           Label1.BorderStyle = 1
           Command3.Caption = "Bring to Front - Grid1"
           Command4.Caption = "Send to Back - Grid1"
           Command5.Caption = "Bring to Front - Picture1"
           Command6.Caption = "Send to Back - Picture1"
       End Sub
    						
  4. Command1 に次のコードを挿入:
       Private Sub Command1_Click()
           Label1.ZOrder 0 'Bring to Front
       End Sub
    						
  5. Command2 に次のコードを挿入:
       Private Sub Command2_Click()
           Label1.ZOrder 1 'Send to Back
       End Sub
    						
  6. Command3 に次のコードを挿入:
       Private Sub Command3_Click()
           Grid1.ZOrder 0 'Bring to Front
       End Sub
    						
  7. Command4 に次のコードを挿入:
       Private Sub Command4_Click()
           Grid1.ZOrder 1 'Send to Back
       End Sub
    						
  8. Command5 に次のコードを挿入:
       Private Sub Command5_Click()
           Picture1.ZOrder 0 'Bring to Front
       End Sub
    						
  9. Command6 に次のコードを挿入:
       Private Sub Command6_Click()
           Picture1.ZOrder 1 'Send to Back
       End Sub
    						
  10. グリッド コントロールを選択し、編集] メニューの [には「の送信に戻る」を] します。 グリッド コントロールは、ラベル コントロールの下にことを確認します。 Visual Basic 3. 0 をグリッド コントロールは、ラベルの上で制御します。
  11. 1 つの PictureBox コントロールを選択し、編集] メニューの [「の送信に戻る」する] をクリックします。 ピクチャ ボックスをグリッドの下に NOT が制御することを確認コントロール。 Visual Basic 3. 0 で 1 つの PictureBox コントロールは、グリッド コントロールの下にです。
  12. アプリケーションを実行します。 左のラベルの下に、コントロールを制御することがは、ラベル コントロールの下に今すぐがわかります。 "送信に戻る-Grid1"をクリックします。 グリッドをラベルの下に NOT が制御することを確認制御ようになりましたか。 これは Visual 基本 3. 0 の動作方法です。
  13. "送信に戻る-Picture1"をクリックします。 ピクチャ ボックス制御することは今すぐ、グリッド コントロールの下に通知します。 これは Visual Basic 3. 0 の動作方法です。
このアプリケーション デザインと実行時の両方で調整します。 方法ほとんど OLE (.OCX) ランタイムで軽量またはウィンドウ以外のコントロールと同様に動作を制御するデザイン時に、機能コントロールのウィンドウと同様に確認します。 Visual Basic 3. 0 プロジェクトを Visual Basic 4. 0 を移植するとき重なり合っているコントロールが、目的の z オーダーに表示されなく。 実行時に必要な方法で、コントロールが重なるように z メソッドを使用コードを追加します。 Visual Basic 3. 0 は、[デザイン時に、コントロールが 1 つの PictureBox コントロールに配置できます。 そのプロジェクトが Visual Basic 4. 0 に移植し、グリッド コントロールは、1 つの PictureBox コントロールの下に配置されます。 z オーダー メソッドを使用しては実行時に、1 つの PictureBox コントロール上でコントロールを配置するしかできません。

関連情報

-Microsoft Visual Basic、4. バージョン 0、「プログラマーズ ガイド」、「付録 C「の互換性を持つその他バージョン」、"Visual Basic 3. 0 の OCX コントロールの Z オーダーで"] セクションで ["Windows サブセクション。

:「Visual Basic 4. 0、ただし、ほとんどの OCX コントロール同様実行時に、軽量コントロール...」を起動する、2 番目の文"Visual Basic 4. 0、ただし、ほとんど OCX コントロール動作時実行には、デザイン時に、Z オーダー設定にかかわらず、ウィンドウのコントロールのように。"を参照してください。

プロパティ

文書番号: 145731 - 最終更新日: 2014年3月1日 - リビジョン: 2.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
キーワード:?
kbnosurvey kbarchive kbbug kbmt KB145731 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:145731
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com