いつもお世話になっております。
環境:Windows2000 VB6.0SP5
イメージコントロールClick等のイベント発生時に、
どのコントロールのイベントなのか、コントロール名を取得することは
可能でしょうか。
調べておりますが、どうしても解りません。
どなたかご指導いただけませんでしょうか。
こんにちは、じゃんぬねっと です。
> イメージコントロールClick等のイベント発生時に、
> どのコントロールのイベントなのか
ん? この文章が答えなんじゃないのですか?
"イメージコントロール"で、Click() イベント発生したのだから、
"イメージコントロール"が正解ですよね。
# イベントは起きるもので、起こすものではありませんから
>ん? この文章が答えなんじゃないのですか?
>"イメージコントロール"で、Click() イベント発生したのだから、
>"イメージコントロール"が正解ですよね。
もっと具体的な Image1 とかいう名前かコントロールを参照
する変数を得る汎用的なプロパティとか関数を求めてるのだとは
思うけど…
Me.ActiveControl.Name
とか?
関数名が分かれば…ってのも過去ログで…イマイチ…う〜ん。
自分でベタ書きしないで…っとなるとあったような無かったような…
説明が悪くて本当に申し訳ありません。
たとえば以下のような場合、
Name以外の取得方法があるのだろうかと思いまして。
Private Sub Image1_Click()
sName = Image1.Name
End Sub
ActiveControlは
フォーカスを持つコントロールには使用できるようなのですが...。
VB6はVB.NETのようにデリゲートを実装することができない仕様なので
Image1_ClickのイベントはImage1からしか発生しない
だから、もとのオブジェクト名をイベントの引数に渡す必要がない
という思想のもとに作られているんじゃないでしょうか。
ということでImage1_ClickないでわざわざImage1.Nameとするのは
2度手間なだけのように思います。
じゃんぬねっと様、特攻隊長まるるう様、.net初心者様
御指導感謝いたします。
仰るとおりNameを使用するのは二度手間なのですが、
NameやTagを他の関数の引数として使用したいと考えておりまして。
やはり
フォームのMe.NameやMe.Tagのような便利なものは
無いのでしょうか。
というより何故Image1.Nameでは不都合なのでしょうか?
そこが理解できないのでもう少しご説明願います。
.net初心者様、御返事有難う御座います。
Imageコントロールを20個程使用しておりまして、
イベント発生時の処理コードを
簡単に出来ないものだろうかと考えました。
コントロール名を変更した場合も、
フォームの「Me」のようなものがあれば、
楽だろうと思いまして、色々調べてみたのですが...。
説明不足で申し訳ありません。
コントロール配列にすることを検討してみては?
ひろ様、有難う御座います。
最初はコントロール配列にしておりましたが、
個別名の方が判りやすいと思い、やめたのです。
配列に戻したほうが賢明でしょうか。
[VB.NET]ではコントロール配列がサポートされてませんので
コントロールの参照を格納した配列で代用するサンプルを
載せましたが…。[VB6.0]に読み代えるのは難しくないと
思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200412/04120067.txt
> 配列に戻したほうが賢明でしょうか。
コントロール配列を使った方が多分簡単。
もし、コントロール配列を使わずに処理をまとめるなら、
WithEvents を使って処理できます。
http://www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm
> [VB6.0]に読み代えるのは難しくないと思います。
そうかなぁ…。VB6 と VB.NET 両方の知識がある程度無いと、難しくないですか?
提示先のコードだと、
> Handles ComboBox1.SelectedIndexChanged, _
> ComboBox3.SelectedIndexChanged, _
> ComboBox5.SelectedIndexChanged
の部分や、
> AddHandler comb(n).Click, AddressOf ComboBox_SelectedIndexChanged
などを VB6 化するのは、それなりの知識が無いと辛いような。
40859様、特攻隊長まるるう様、アドバイス感謝いたします。
大変勉強になりました。
やはり配列を考えてみようと思います。
御時間割いて下さり、有難う御座いました。
ツイート | ![]() |