VB6でメインフォームと、その上に表示する透過フォームを作成しました。
透過フォームには、メインフォームに対するオプションのような表示を行います。
この透過フォームの一部(透過の部分)をクリックしたときに座標を取得する処理を
造る必要がでてきたのですが、どのようにすれば実現できますか?
※質問者は以下の方法で試してみましたが、実現できませんでした。
①Visible = falseのコントロールを配置し、コントロールがクリックされた
時のメソッドを待つ→falseにしたところ、イベントが発生しなくなったためNG
アドバイスよろしくお願いします。
透過フォームというのが何をさしているのかにもよりますが……たとえば単にクリックされた座標を拾いたいだけであれば、ラベルなどのコントロールを用いたほうが簡単に実現できるとは思います。
ラベルには、BackStyle というプロパティがあります。
このプロパティを fmBackStyleTransparent に設定することで、Visible プロパティを変更することなく、完全に透明なラベルを配置することが可能になります。ラベル自体は見えなくても存在していますので、クリックイベントは普通に発生します。
以下のサイトなどをご参考になさるとよろしいかと。
透過フォームというのが何をさしているのかにもよりますが……たとえば単にクリックされた座標を拾いたいだけであれば、ラベルなどのコントロールを用いたほうが簡単に実現できるとは思います。
ラベルには、BackStyle というプロパティがあります。
このプロパティを fmBackStyleTransparent に設定することで、Visible プロパティを変更することなく、完全に透明なラベルを配置することが可能になります。ラベル自体は見えなくても存在していますので、クリックイベントは普通に発生します。
以下のサイトなどをご参考になさるとよろしいかと。
回答ありがとうございました。
今回は(その他の原因かもしれませんがおそらく)
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=90
に記載されている方法で透明にしているので
LabelのCaption部分
がクリックされたときしかイベントが発生しないようでした。
なのでCaptionがないときはイベントを拾うことができませんでした。
マウスのmoveイベントで常にマウスの座標を取得し、クリック時のイベントで その最後に取得した座標にすればいいかと思います。
http://ziddy.japan.zdnet.com/qa1981749.html?order=DESC&by=dateti...
回答ありがとうございます、、、
しかし、下記HPを参考に透明なフォームを作成されたところ
Moveイベントを取得できなくなるようです。
透明なフォームをあきらめるしかないのか・・・
http://hanatyan.sakura.ne.jp/vbhlp/ibe_Mouse.htm
マウスが 画面上のどこにあるのか座標を取得し、フォームの位置から割り出すというのは どうでしょうか?
マウスがダイアログの上にあるときのイベントは拾うことが出来ませんでした。
タイマー関係のイベントを使えば、Windowsの画面上どこにカーソルが存在するか分かるかもしれませんが、今回そこまではしたくなかったためあきらめました。
回答ありがとうございました。
今回は(その他の原因かもしれませんがおそらく)
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=90
に記載されている方法で透明にしているので
LabelのCaption部分
がクリックされたときしかイベントが発生しないようでした。
なのでCaptionがないときはイベントを拾うことができませんでした。