Screen オブジェクト (Visual Basic 6.0 ユーザー向け)
更新 : 2007 年 11 月
Visual Basic 2008 には、Visual Basic 6.0 の Screen オブジェクトに相当するものはありませんが、その機能の大部分は、.NET Framework を使用して再現できます。
概念上の相違点
Visual Basic 6.0 では、Screen オブジェクトにより、アプリケーションのアクティブなフォームおよびコントロールにアクセスしたり、アプリケーションが表示されている画面に関する情報を取得したり、カーソルの外観を制御したりできます。
Visual Basic 2008 には、直接 Screen オブジェクトに相当するものはありませんが、その機能の大部分は、.NET Framework を使用して再現できます。
メモ : |
---|
Visual Basic 2008 には、Screen プロパティ (My.Computer.Screen) があります。My.Computer.Screen は、Visual Basic 6.0 の Screen オブジェクトと異なり、画面のデバイス名、作業領域、色深度など、画面に関する読み取り専用の情報を返すのみです。詳細については、「My.Computer.Screen プロパティ」を参照してください。 |
ActiveControl プロパティ
Visual Basic 6.0 では、Screen オブジェクトの ActiveControl プロパティを使用して、フォーカスが設定されているコントロールを特定します。ActiveControl プロパティは、Screen.ActiveControl のようにグローバルに使用できます。この場合、現在選択されているフォーム上のアクティブなコントロールが返されます。Form2.ActiveControl などとして特定のフォームを参照すると、ActiveControl は、参照先フォームがアクティブである場合にフォーカスを得るコントロールを指定します。
Visual Basic 2008 では、グローバルな ActiveControl プロパティはなく、フォームの各インスタンスに固有の ActiveControl プロパティがあります。このプロパティは、Visual Basic 6.0 で特定のフォームを参照する場合と同様に機能します。現在選択されているフォームのアクティブなコントロールを特定するには、まず OpenForms コレクションに対して ContainsFocus プロパティのチェックを反復的に行い、アクティブなフォームを特定する必要があります。
ActiveForm プロパティ
Visual Basic 6.0 では、Screen オブジェクトの ActiveForm プロパティを使用して、現在フォーカスが設定されているフォームを特定します。MDI 親フォームにフォーカスが設定されている場合、ActiveForm は、最後にフォーカスが設定されていた MDI 子フォームを返します。
Visual Basic 2008 では、グローバルな ActiveForm プロパティは使用されなくなりました。アクティブなフォームを特定するには、OpenForms コレクションを反復処理して、ContainsFocus プロパティが True に設定されているフォームを探す必要があります。
Visual Basic 2008 の MDI 親フォーム (IsMDIContainer が True に設定されているフォーム) には、ActiveMDIChild プロパティがあります。これにより、OpenForms コレクションを使用せずにアクティブな子フォームを返すことができます。
MousePointer プロパティ
Visual Basic 6.0 では、Screen オブジェクトの MousePointer プロパティを使用して、カーソルの外観を変更します。これを設定すると、アプリケーション内のすべてのフォームに適用されます。
Visual Basic 2008 では、グローバルな MousePointer プロパティは使用されなくなりました。各フォームに Cursor プロパティがあり、これを使用すると、そのフォームでのみカーソルの外観を変更できます。
TwipsPerPixel プロパティ
Visual Basic 6.0 では、Screen オブジェクトの TwipsPerPixelX プロパティと TwipsPerPixelY プロパティを使用して、画面の計測値を論理 twip (Visual Basic 6.0 の標準の計測単位) からピクセルに変換します。
Visual Basic 2008 では、ピクセルが標準の計測単位であるため、変換の必要はなくなりました。
Screen オブジェクトに関するコードの変更点
次のコード例は、Visual Basic 6.0 と Visual Basic 2008 のコーディング テクニックの違いを示します。
アクティブなコントロールを特定するコードの変更点
次のコードは、現在選択されているフォームの現在選択されているコントロールから、テキストをクリップボードにコピーする方法を示しています。
' Visual Basic 6.0
If TypeOf Screen.ActiveControl Is TextBox Then
Clipboard.SetText Screen.ActiveControl.Text
End If
' Visual Basic
Dim i As Integer
For i = 0 To My.Application.OpenForms.Count - 1
If My.Application.OpenForms.Item(i).ContainsFocus Then
If TypeOf (My.Application.OpenForms.Item(i).ActiveControl) _
Is TextBox Then
My.Computer.Clipboard.SetText(My.Application.OpenForms. _
Item(i).ActiveControl.Text)
End If
End If
Next
アクティブなフォームを特定するコードの変更点
次のコードは、現在選択されているフォームのキャプションを変更する方法を示しています。
' Visual Basic 6.0
Screen.ActiveForm.Caption = "This is the selected form"
' Visual Basic
Dim i As Integer
For i = 0 To My.Application.OpenForms.Count - 1
If My.Application.OpenForms.Item(i).ContainsFocus Then
My.Application.OpenForms.Item(i).Text = _
"This is the selected form"
End If
Next
MDI アプリケーションのアクティブなフォームを特定するコードの変更点
次のコードは、現在選択されている MDI 子フォームのキャプションを変更する方法を示しています。
' Visual Basic 6.0
Screen.ActiveForm.Caption = "This is the selected child form"
' Visual Basic
Me.ActiveMdiChild.Text = "This is the selected child form"
Screen オブジェクトのプロパティの対応
Visual Basic 6.0 のプロパティと、それに対応する Visual Basic 2008 のプロパティを次の表に示します。必要に応じて、動作の違いを説明するトピックへのリンクが示されています。Visual Basic 2008 に直接対応するものがない場合は、代わりの項目について説明したトピックへのリンクを示します。
プロパティ
Visual Basic 6.0 |
Visual Basic 2008で対応するもの |
---|---|
ActiveControl |
My.Application.OpenForms(0).ActiveControl |
ActiveForm |
My.Application.OpenForms(0).ContainsFocus または ActiveMdiChild (MDI アプリケーション) |
FontCount Fonts |
新規に実装されました。フォントを列挙する動作は変更されています。詳細については、「フォント処理 (Visual Basic 6.0 ユーザー向け)」を参照してください。 |
Height |
My.Computer.Screen.Bounds.Height |
MouseIcon |
新規に実装されました。詳細については、「カスタム MousePointer を設定できない」を参照してください。 |
MousePointer |
System.Windows.Forms.Cursor |
TwipsPerPixelX TwipsPerPixelY |
新規に実装されました。Visual Basic 2008 では、座標はピクセルで表され、twip は単位として使用されません。 |
Width |
My.Computer.Screen.Bounds.Width |
アップグレード メモ
Visual Basic 6.0 アプリケーションを Visual Basic 2008 にアップグレードすると、Screen オブジェクトのプロパティが対応する Visual Basic 2008 のプロパティにアップグレードされます。動作が異なる場合は、アップグレードに関するコメントがコードに挿入されます。
参照
概念
App オブジェクト (Visual Basic 6.0 ユーザー向け)
フォント処理 (Visual Basic 6.0 ユーザー向け)