onResizeイベントを追加すると「オーナードローメニュー(odm)」が無効になる

解決


ラブあゆ  2001-04-23 09:31:37  No: 79

はじめまして。m(__)m
オーナードローメニュー(odm)コンポを使わせていただいてます。
問題なく動作していたのですが、onResizeイベントを追加すると「オーナードローメニュー(odm)」が無効になってしまいました。(TT)
onResizeイベントがあると、POPUPメニューのMessageが届かないんです。 何か解決策はないでしょうか?


PAPY  2001-04-24 00:10:31  No: 80

onResizeというとメインフォームのイベントですよね?
確認してみましたが私の方ではPopUpメニューにもメッセージが届いていました。(^^;
あと、開発環境/ソースの改変部分なども記載してくれると大変わかりやすいです。


ラブあゆ  2001-05-06 12:23:09  No: 81

PAPYさん、レスをいただいたのに返事が遅くなってすみませんm(__)m
実はマシントラブルでネットにアクセス出来なかったのです。

>onResizeというとメインフォームのイベントですよね?

はい、それがonResizeイベントを削除した後もう一度追加してみたら、ナンと正常にODMが動作するんです。
また別のプログラムにODMを入れてみると動作しなかったので、いろいろ思考錯誤して結局タイマーコンポを削除したらODMが動作しました。
でも、削除後にもう一度タイマーを追加するとまたまたチャントODMが動作するのです。
この現象は一体どうなってるんでしょう。(@_@)
あっ書き忘れましたが、開発環境はWin98、Delphi2.0です(^^ゞ
Delphi3.1以降ではこんな不思議現象は起きないんでしょうか?

ここで話が変わって(^^;;、SendMessage(hWnd,WM_CLOSE,0,0);で普通のアプリなら閉じることが出来ますが、エクスプローラやIEは閉じてくれません。 ShowWindow(hWnd, SW_HIDE);だと一応消えますが隠れるだけでIEは終了していないんですね。
IEを閉じる(終了させる)にはどうすればいいんでしょう?


ラブあゆ  2001-05-06 12:49:40  No: 82

PAPYさん、レスをいただいたのに返事が遅くなってすみませんm(__)m
実はマシントラブルでネットにアクセス出来なかったのです。

>onResizeというとメインフォームのイベントですよね?

はい、それがonResizeイベントを削除した後もう一度追加してみたら、ナンと正常にODMが動作するんです。
また別のプログラムにODMを入れてみると動作しなかったので、いろいろ思考錯誤して結局タイマーコンポを削除したらODMが動作しました。
でも、削除後にもう一度タイマーを追加するとまたまたチャントODMが動作するのです。
この現象は一体どうなってるんでしょう。(@_@)
あっ書き忘れましたが、開発環境はWin98、Delphi2.0です(^^ゞ
Delphi3.1以降ではこんな不思議現象は起きないんでしょうか?

ここで話が変わって(^^;;、SendMessage(hWnd,WM_CLOSE,0,0);で普通のアプリなら閉じることが出来ますが、エクスプローラやIEは閉じてくれません。 ShowWindow(hWnd, SW_HIDE);だと一応消えますが隠れるだけでIEは終了していないんですね。
IEを閉じる(終了させる)にはどうすればいいんでしょう?


ラブあゆ  2001-05-06 12:56:45  No: 83

すみません、うっかりIEの「更新」をクリックしたら二重送信されてしまいました。m(__)m
自分で削除出来ないようなので、管理者さん重複発言を削除してください。m(__)m


PAPY  2001-05-07 00:38:42  No: 84

再度、確認したところDelphi3.0/3.1では正常に動作する模様です。
Delphi2.0の環境は持っていないので対処の仕様がありません。ごめんなさい。(^^;
また、Delphi4.0以降からはTMainMenu及びTPopUpMenuの標準機能としてオーナードローメニューがあります。

>IEを閉じる(終了させる)にはどうすればいいんでしょう?

これではどうでしょうか?
SendMessage(handle,WM_SYSCOMMAND,SC_CLOSE,0);

こちらは終了メッセージではなくシステムメニューの「閉じる」を押したことになるので
ウインドウを閉じることは出来るかも知れません。未確認ですが・・・
※ネット接続は切れないと思います。


ラブあゆ  2001-05-20 17:22:50  No: 85

返事が遅くなりましたm(__)m
あれからいろいろ試した結果、ODMが使えなくなるコンポはいろいろで
すが、どれも一度削除して再追加するとODMが使えるようになります。
Delphi3.0以降では起きない現象ということなのでDelphi2.0のバグなんでしょうね(^^ゞ

>SendMessage(handle,WM_SYSCOMMAND,SC_CLOSE,0);

これでバッチリIEを閉じることが出来ました。ありがとうございました。m(__)m


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加