■ その他の変更
- 特殊オブジェクト
- ドラッグ & ドロップ
- DDE はサポートされなくなる
特殊オブジェクト
特殊オブジェクトはなくなります。そして、それに代わるパワーアップされた機能、または Visual Basic 6.0 互換機能が提供されるものを紹介します。
App オブジェクト
アプリケーションに関する情報は、.NET Framework クラスライブラリにある Assembly クラスが提供します。または、Visual Basic 6.0 互換機能 (VB6.XXX()) を利用することもできます。
たとえば、App.Path プロパティで取得していた 「実行時のパス名」 は、System.Reflection.Assembly.GetExecutingAssembly.Location プロパティ、または、VB6.GetPath() メソッドで取得できます。互換クラスはオーバーヘッドがあるため、前者がお勧めです。
Debug オブジェクト
対応する機能が .NET Framework クラスライブラリにより提供されています。たとえば、Debug.Print メソッドで実現していたデバッグウィンドウへの表示は、System.Diagnostics.Debug.WriteLine() メソッドを利用できます。
Screen オブジェクト
スクリーンに関する情報は、.NET Framework クラスライブラリにある Screen クラスが提供しますが、Visual Basic 6.0 の Screen オブジェクトと共通するプロパティ、メソッドは多くありません。
Err オブジェクト
Err オブジェクトは引き続き利用可能です。例外処理との関連については、第 4 章の 「エラー処理 (例外処理) 」 を参照してください。
Clipboard オブジェクト
クリップボードとのやり取りは、.NET Framework クラスライブラリにある Clipboard クラスが提供します。 Visual Basic 6.0 の Clipboard オブジェクトより多くの機能、多くのクリップボード形式をサポートします。
Printer オブジェクト
プリンタへの出力機能は、.NET Framework クラスライブラリにある PrintDocument クラスが提供します。また、これ以外にもプリンタやページの設定、印刷ダイアログやプレビューの機能を提供するクラスを利用できます。
ドラッグ & ドロップ
オブジェクトモデルが大きく変更されました。
DDE
サポートされなくなりました。
特殊オブジェクト
特殊オブジェクトは自動アップグレードされるものとされないものがあります。
App オブジェクト
たとえば、App.ExeName は VB6.GetExeName() に、App.Path は VB6.GetPath() にそれぞれ変更されます。オーバーヘッドを考慮し、アップグレード後、手動で Assembly クラスのメソッド、プロパティに修正するとよいでしょう。
Debug オブジェクト
たとえば、Debug.Print は System.Diagnostics.Debug.WriteLine() に変更されます。
Screen オブジェクト
対応するメソッドに置き換えられるものもあります。たとえば、Screen.Height プロパティは、System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height プロパティに変更されます。
Err オブジェクト
そのまま利用できるため、変更はありません。
以上のように、対応するメソッドなどがあれば、それに自動アップグレードされます。しかし、Clipboard オブジェクトや Printer オブジェクトのように、オブジェクトモデルが大きく変更されているオブジェクトについては、自動ではアップグレードされません。
ドラッグ & ドロップ
オブジェクトモデルが大きく異なるため、Visual Basic 6.0 のドラッグ & ドロッププロパティとメソッドはアップグレードされません。
DDE
サポートされないため、すべてコメントアウトされます。
ドラッグ & ドロップのサンプル
「本日のランチ」 「ドリンク」 「ケーキ」 をドラッグし、購入リストにドロップすると、リストに追加されるアプリケーションです (図 17)。
図 17:[本日のランチ]ボタンをドラッグし、右側のリスト内にドロップ
サンプルの作り方
- コントロールを配置します。
- プロパティを設定します。ListBox コントロールの AllowDrop プロパティを True に設定します。
- コーディングします。リスト 2 を追加すれば、できあがり!
' ボタン上でマウスをダウンするとドラッグ開始 (Button2、3 も同様に記述) Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles Button1.MouseDown Button1.DoDragDrop(Button1.Text, DragDropEffects.Copy Or DragDropEffects.Move) End Sub ' リスト上にドラッグ中のマウスが入ってくると期待したデータ形式どうかをチェック→アイコンを変更 Private Sub ListBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _ Handles ListBox1.DragEnter If (e.Data.GetDataPresent(DataFormats.Text)) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub ' リスト上でドロップしたとき、リストにアイテム (Button の Text) を追加 Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _ Handles ListBox1.DragDrop ListBox1.Items.Add(e.Data.GetData(DataFormats.Text).ToString) End Sub
リスト 2:ドラッグ & ドロップサンプルのコード