• 締切済み

ユーザーコントロールの座標

コントロール名がHogeのユーザーコントロールを作成します。 Form1にHogeを貼り付けHoge1とする。 どのようなユーザーコントロールに対してもForm1.Hoge1.Leftのような書き方ができますが、 Dim UC As Hoge UC.Leftのような書き方ができません。 後者のような参照ができないプロパティは、自分で定義したのではない、元からあるLeftとTop、Indexなどです。 このようなプロパティは、コントロールの参照の変数から、アクセスできないのでしょうか? オブジェクトはこのプロパティおよびメソッドをサポートしていませんと言われます。 オブジェクト変数が宣言されていないわけではありません。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

やはり現象が確認できません。 Private Sub Form_Load() Hoge.DragMode = vbAutomatic End Sub Private Sub Picture1_DragDrop(Source As Control, x As Single, Y As Single) Dim Cast As Hoge MsgBox Source.Left Set Cast = Source MsgBox Cast.Left Cast.Left = Cast.Left + 100 End Sub ひとつだけ気になったのは >Form1にHogeを配置し、Hogeと名づける。 クラス名と名前が同じなのは気持ち悪いので名前はHoge1とかにするべきでしょう。

haporun
質問者

お礼

追記 ○ じつはコントロール名が日本語である ○ UML企画書からプログラムを作っているので、クラス名とオブジェクト名が同じでないことがふさわしくない なのですが、これでも再現しませんか?

haporun
質問者

補足

クラス名とオブジェクト名を変えましたが、やはりメンバリストには表示されないし、コンパイルもできませんでした。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

こちらの環境(VB6SP5+W2K)では、ユーザーコントロールの.Leftプロパティは 問題なく使えるけど.. 環境と再現手順を補足して下さい

haporun
質問者

お礼

W2KSP2+VBSP5で同じ環境です。 コントロールHogeを作成し、適当なメンバを持たせる。 Form1にHogeを配置し、Hogeと名づける。 Form1.Hoge.Leftは参照可能。 Picture1を貼り付けて、実行時HogeをPiture1にドラッグしたところ Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Dim Cast As Hoge Set Cast = Source とするとCast.LeftもSource.Leftも参照不可能。 #1にも書いたとおりです。

haporun
質問者

補足

どうも日本語であることが原因かもしれません。 HogeをForm1に配置した場合、Form1.Hogeは "_日本語名コントロール型"、 Dim Cast As 日本語名コントロール型とした場合Castは "日本語名コントロール型" となり、配置されたほうはアンダースコアが最初についているのです。 As _日本語名コントロール型 と記述しようとしましたが、もちろん不可、As [_日本語名コントロール型] もありませんでした。 いまさら日本語の名前を撤回することはできないのですが、これの解決方法はないでしょうか? そもそもUMLからVBに来ることのほうが無望?

  • uratan
  • ベストアンサー率30% (38/124)
回答No.1

具体的に、どのようなことをされたいのか、教えていただけないでしょうか? なぜ、hoge型の変数を定義しなくてはいけないのですか? パッと見、派生させたいのかな?と思っちゃいました。 ・・・でも、VBで派生って概念ありましたっけ?

haporun
質問者

お礼

Form1にHoge(0)が配置してあって 動的にロードしたいくつかのHoge(?)があるのですが、それをあるコントロールにドラッグした時に Private Sub あるコントロール_DragDrop(Source As Control, X As Single, Y As Single) Dim Cast As Hoge Set Cast = Source としたときにCast.Leftが参照できなかったのです。 もちろんSource.Leftも。

関連するQ&A