ジグソーパズルのように、形が四角でなく、不揃いな輪郭をもった
オブジェクトを作り、それをドラッグして、あたかもはめ込めるように見せるには、
どのようなコントロールを使ってどのように設定したらよいのでしょうか。

このQ&Aに関連する最新のQ&A

パズル 作り方」に関するQ&A: パズルの作り方

A 回答 (1件)

どもども田吾作7です。



コントロール・・・多分無いでしょう。

四角、丸といった基本図形以外の多角形、曲線はリージョンによる作業が必要だと思います。

で、複数の独自のリージョンをセットしたオブジェクトの領域を組み合わせるわけですから、結構骨ですよ。

でわでわ
    • good
    • 0
この回答へのお礼

アドバイス有難うございました。
リージョンという概念および機能がポイントですね。
また、サンプルフォームも参考になりました。
以上お礼まで申し上げます。

お礼日時:2001/07/20 14:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコントロールのドラッグ・ドロップ

http://oshiete1.goo.ne.jp/kotaeru.php3?q=40052

にて、実行中のコントールのD&Dが可能ですが、この場合、
個別のコントロールにコードを書かないといけないようで
す。

すべての種類に一括して働くようなコードだとどういう風
に書けばいいものでしょうか?

Aベストアンサー

WithEventsを使えば、コントロールの種類毎にならまとめることが出来ます。

Qオブジェクトとコントロールって違うの?

オブジェクトとコントロールの違いは何でしょうか?

例えば、テキストボックスはオブジェクトでもあり、コントロールでもあると思うのですが(ここは合ってますか?)、違いはあるのでしょうか。

Aベストアンサー

オブジェクトとはクラス型またはコントロール型の変数実態のことです。

さて、言っていることの意味がわからないと思います。

たとえば、フォームというものにはキャプションとか言ったプロパティがあります。
こういったものを定義するのがクラスです。
そして、これを実行したときにフォームが現れます。
これはクラス定義されたフォームの変数を作ったのです。
そしてこれがオブジェクトです。

まだわからないと思います。
As Integerなどと書くように、As Form1などと書くことができるのを知っているでしょうか。
これはForm1という変数の型があるということを示しています。
こうやって、変数の方であるものをクラス、変数そのものをオブジェクトと思えばよいでしょう。
つまり、プロジェクトにForm1を追加すると、Form1という変数の型とForm1という変数が追加されることになります。

さて、コントロールです。
コントロールは位置的にはクラスと同じです。
しかし、コントロールはフォーム上に配置されていなければならないので、単独ではその変数であるオブジェクトを作成することはできません。
フォーム上に配置することによって、そのオブジェクトは作成されます。

クラスモジュールを追加すると、そのクラスの定義を作成することができます。
同時に変数であるオブジェクトは作成されたりはしません。
オブジェクト変数を作成するためには、

Dim x As New Class1

などと、どこかのモジュール内で変数を宣言する必要があります。
Newを調べてわからなかったら、また質問するか補足してください。

クラスは今のように変数を宣言できますが、

Dim x As New CommandButton

などという風に、新しいコマンドボタンを作ることはできません。

よくわかんなくなったらまた質問してくださいな。

オブジェクトとはクラス型またはコントロール型の変数実態のことです。

さて、言っていることの意味がわからないと思います。

たとえば、フォームというものにはキャプションとか言ったプロパティがあります。
こういったものを定義するのがクラスです。
そして、これを実行したときにフォームが現れます。
これはクラス定義されたフォームの変数を作ったのです。
そしてこれがオブジェクトです。

まだわからないと思います。
As Integerなどと書くように、As Form1などと書くことができるのを知っ...続きを読む

QWebBrowserコントロールかIEオブジェクトどちらが簡単

プログラム初心者です。プログラムでブラウザに表示されたページのデータを取得して加工したいと思っています。そこで、どうやって実現できるかを調べたところIEオブジェクトをCOMコンポーネントCreateObject("InternetExplorer.Application")という感じでオブジェクトを作ってIEと同じ動作をすることができるという情報をキャッチしました。

またVisual BasicにWebBrowserコントロールなるものがあり、そちらでもIEと同じ振る舞いをさせることもできるし、サイト内の情報を取得して加工することもできると書かれていました。

プログラムは初心者ですが、どちらの方法が簡単でしょうか?ご教授お願いします。

Aベストアンサー

安直なのはWebBrowserコントロールですが、将来、HTMLとそれに使う
Scriptを勉強していくのでしたらCOMコンポーネントを使う方が、
実環境に近いプログラムになるので、有効だと思います。
尚、COMコンポーネントを使う方はVBが無くても(WebBrowser
コントロールを乗せるコンテナ、例えばフォーム等が無くても)
実行させることができます。

QActiveX EXEのオブジェクトに渡したオブジェクトが微妙

またまた微妙な質問ですみません。

-------
ActiveX EXEプロジェクト
Class Hoge

Public Sub Moge(lst)

Dim Cast As ListBox
MsgBox TypeName(lst) 'ListBoxと表示される
Set Cast = lst 'ここがエラー
Cast.List(2) = "hogehoge" 'キャストはできないがVariant型のままのアクセスは可能

End Sub
-------
標準EXE
Class Form1 (List1を配置)

Dim X As New Hoge

Private Sub Form_Load()

X.Moge List1

End Sub
-----

このように、アウトプロセスのオブジェクトにフォームのコントロールを渡しました。
引数の型をAs ListBoxにしたかったのですが、それだとまずそこで型が一致しないといわれます。
しようがないのでVariantで引数を宣言し、渡した後にキャストしようと思ったのですが、そこでも型が一致しないといわれます。
TypeName関数は "ListBox" を返すし、Variant型のままメンバにアクセスすることはできるのですが、ListBox型の変数に代入することだけできないのです。

別プロセスのオブジェクトには、オブジェクトの参照は渡せないのでしょうか?

またまた微妙な質問ですみません。

-------
ActiveX EXEプロジェクト
Class Hoge

Public Sub Moge(lst)

Dim Cast As ListBox
MsgBox TypeName(lst) 'ListBoxと表示される
Set Cast = lst 'ここがエラー
Cast.List(2) = "hogehoge" 'キャストはできないがVariant型のままのアクセスは可能

End Sub
-------
標準EXE
Class Form1 (List1を配置)

Dim X As New Hoge

Private Sub Form_Load()

X.Moge List1

End Sub
-----

このように、アウトプロセスのオブジェクトにフォームのコ...続きを読む

Aベストアンサー

リストボックスをオブジェクト変数にセットして、何をしたいのでしょうか?
それがわかった方が、求める動きが可能かもしれません。

別プロセスでオブジェクトを渡すのは無理かと思います。
もしできるとしたら、オブジェクトのハンドルを取得し、オブジェクト変数の領域を確保。そこに代入という方法が思いつきますが、領域確保が思うようにならないVBでは落ちると思います。

ただリストボックスの選択している場所を得たいとか、選択させたいとか、そういう操作なら別プロセスなら、ハンドルだけで操作する方法もあります。

結局結末は何がしたいのでしょうか?

QVisual Basic.NETのエラー("オブジェクト参照がオブジェクト インスタンスに設定されていません。")について

DLLを読み込むプログラムで、以下のように宣言した関数"VCread_wave_file"を呼び出そうとすると、
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
というエラーが出てしまうのですが、なぜなのでしょうか?

プログラムは以下のようになっています。

Public Class Form1
Inherits System.Windows.Forms.Form

Dim status As Integer
Dim wavelength As Long
Dim samplf As Double

Private Declare Function VCread_wave_file Lib "Vcon.dll" (ByVal FileName As String, ByVal tmpFilename As String, ByVal wavelength As Long, ByVal samplingFrequency As Double) As Integer

(中略)

Private Sub ChangeStartButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChangeStartButton.Click

status = VCread_wave_file("rectmp.wav", "rectmp.raw", wavelength, samplf)
Label4.Text = status

End Sub

よろしくお願いいたします。

DLLを読み込むプログラムで、以下のように宣言した関数"VCread_wave_file"を呼び出そうとすると、
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
というエラーが出てしまうのですが、なぜなのでしょうか?

プログラムは以下のようになっています。

Public Class Form1
Inherits System.Windows.Forms.Form

Dim status As Integer
Dim wavelength As Long
Dim samplf As Double

Private Declare Function VCread_wave_file Lib "Vcon.dll" (ByVal FileNa...続きを読む

Aベストアンサー

そのDLLは知らないのですが、アンマネージならまずその型は合っているかどうかの確認を。
VB.NETではLongは64bit、Integerは32bitに変更されていますので、VB6.0でのLongを意味しているならVB.NETではIntegerです。IntegerならShortになります。


人気Q&Aランキング

おすすめ情報