- PR -

VB6→VB.NETアップグレード対象について

1
投稿者投稿内容
ぎん
会議室デビュー日: 2006/03/12
投稿数: 5
投稿日時: 2006-05-26 17:43
VB6のソースをVB.NETにアップグレードしたところ、
モジュール内で汎用名前空間を使用しているため、
アップグレード対象外になった箇所があります。

どうやらMicrosoft.VisualBasic.Compatibility系のものらしいのですが
(ex. Microsoft.VisualBasic.Compatibility.VB6.GroupBoxArray)、
直接コントロールのidを使用して、例えば grpBoxArr.Count という使い方をしたり、
grpBoxArr(idx).Height = 100
などとしています。

過去のスレッドを読んで参考にし、idからコントロールを特定することはできても、
GroupBoxArrayにはCTypeで変換できなかったりするようです。
そもそもGroupBoxArrayがコントロール扱いでないのかもしれませんが、
フォーム上にありますし…。

このコントロールのプロパティにアクセスする方法があれば、お教えいただけたらと思います。
単純なことであるのに、煮詰まって見えてないだけかもしれませんが…。

■こんな感じで使われています。
Public Sub SetArrayValue(ByRef crrForm As System.Windows.Forms.Form)
  With crrForm
    For idx = 0 To .grpBoxArr.Count - 1
      With .grpBoxArr(idx)
        .Height = 100
      End With
    Next idx
  End With
End Sub


[ メッセージ編集済み 編集者: ぎん 編集日時 2006-05-26 17:44 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-26 18:00
引用:

ぎんさんの書き込み (2006-05-26 17:43) より:

■こんな感じで使われています。
Public Sub SetArrayValue(ByRef crrForm As System.Windows.Forms.Form)
  With crrForm
    For idx = 0 To .grpBoxArr.Count - 1
      With .grpBoxArr(idx)
        .Height = 100
      End With
    Next idx
  End With
End Sub


crrForm に例えば GroupBoxHeight というプロパティを追加して
それ経由で値を引き渡します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-26 18:06
引用:

ぎんさんの書き込み (2006-05-26 17:43) より:

過去のスレッドを読んで参考にし、idからコントロールを特定することはできても、
[*]GroupBoxArrayにはCTypeで変換できなかったりするようです。


"何を" キャストしたいのですか?
[*] の部分に "何を" が含まれていません。

説明だけを見ると、GroupBox を GroupBoxArray しているかのように読めてしまえるのですが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぎん
会議室デビュー日: 2006/03/12
投稿数: 5
投稿日時: 2006-05-29 11:55
引用:

かるあさんの書き込み (2006-05-26 18:00) より:
crrForm に例えば GroupBoxHeight というプロパティを追加して
それ経由で値を引き渡します。



回答ありがとうございます。
要は、そのメソッドでは、「そのフォームにgrpBoxArrというGroupBoxArrayがあったらHeightを指定しろ」ということをしていて、「そのフォーム」というようにフォームを特定していないので、grpBoxArrが見つからないという次第です。VB6だとこんなにアバウトでもOKだったんですね…。

やはりフォームを特定してから、処理させた方がいいでしょうかね…。
ぎん
会議室デビュー日: 2006/03/12
投稿数: 5
投稿日時: 2006-05-29 12:06
引用:

じゃんぬねっとさんの書き込み (2006-05-26 18:06) より:
"何を" キャストしたいのですか?
[*] の部分に "何を" が含まれていません。

説明だけを見ると、GroupBox を GroupBoxArray しているかのように読めてしまえるのですが...



回答ありがとうございます。
GroupBoxArrayを使ったことがなかったので、コントロールの一つのように感じ、
Control→GroupBoxArrayのキャストを無謀にもしようとしてみたわけです…。

確かにGroupBoxをGroupBoxArrayにしているのかもしれないですが、
GroupBox単体での存在がありませんので、GroupBoxArrayにインデックスを指定して
アクセスしているんだと思います。それで、GroupBoxArrayにアクセスしたかったのですが、
ID”grpBoxArr”という名称が直接使用されていたので、恥ずかしながら混乱してしまったのです…。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-29 12:48
引用:

ぎんさんの書き込み (2006-05-29 11:55) より:

要は、そのメソッドでは、「そのフォームにgrpBoxArrというGroupBoxArrayがあったらHeightを指定しろ」ということをしていて、「そのフォーム」というようにフォームを特定していないので、grpBoxArrが見つからないという次第です。VB6だとこんなにアバウトでもOKだったんですね…。

やはりフォームを特定してから、処理させた方がいいでしょうかね…。


crrForm をキャストして使用したり特定のクラスの型としてもいいですが
僕の場合はインターフェイスとして定義します。
1

スキルアップ/キャリアアップ(JOB@IT)