ks

  1. Kuro さん,開発お疲れ様です.
    ほとんど支障はないですが,見つけてしまったので一応不具合の報告を.

    環境:
     Mery 2.0.15.4235
     Windows7 64bit sp1
     マルチディスプレイ
    現象:
     マルチディスプレイで上側にメインを,下側にサブを配置する.
     サブ(下側)で Mery のタイトルメニューを開く.
     ⇒メニュー表示位置が上にずれる

    タスクバー分だけずれてしまっている気もしますが,検証はしていません.
    コードの問題なのかライブラリの問題なのか...

     |  【不具合】マルチディスプレイでメニュー表示位置がずれる  |  返信
  2. ども、こんばんは。

    > Kuro さん,開発お疲れ様です.

    ありがとうございます、ほんと気付かないような部分でポロポロと出てくるものですね、バグというものは・・・。大歓迎ですけれど!

    > 現象:
    >  マルチディスプレイで上側にメインを,下側にサブを配置する.
    >  サブ(下側)で Mery のタイトルメニューを開く.
    >  ⇒メニュー表示位置が上にずれる

    なるほど・・・。マルチディスプレイ環境を構築できるほど金の余裕がなく、動作検証ができませんorz

    想像上のお話ですが、メニュー周りは純粋に標準なものを使っておりますので、おそらく開発環境 (Delphi) 上の不具合なのだと思いますが、なかなかやっかいな問題ですね。

    たぶん現象を確認できたとしても直せるレベルではないかと思います。開発環境を更新すれば治ってたりするのかもしれませんが、数万かかりますからね・・・。おっと、愚痴っぽくなってしまいました。

    気に留めておきます。なんとかその現象を再現して見てみたいような気もしますが、見たくないような気がする、、、開発者特有の悲しさです。

     |  Kuro  |  返信
  3. タイトルまたやってしもうた...

    > 想像上のお話ですが、メニュー周りは純粋に標準なものを使っておりますので、おそらく開発環境 (Delphi) 上の不具合なのだと思いますが、なかなかやっかいな問題ですね。
    そんな気がしていました.というよりここまでつくっていたら「GUIライブラリ自作ですか!」ってレベルですしね.
    ただ発現する人って希だと思います.マルチディスプレイでも普通横に並べると思いますし.

    > たぶん現象を確認できたとしても直せるレベルではないかと思います。開発環境を更新すれば治ってたりするのかもしれませんが、数万かかりますからね・・・。おっと、愚痴っぽくなってしまいました。
    いえいえ,本格的に開発するとなるとどうしてもお金はかかりますからね.
    私はお金かけたくない人間なので,Javascript と VS Express Edition で逃げていますが.
    以前少し話に上がったPayPalあたりでの寄付をご検討されるのも一つかと.

    > 気に留めておきます。なんとかその現象を再現して見てみたいような気もしますが、見たくないような気がする、、、開発者特有の悲しさです。
    マクロを大量に登録して,マクロメニューを開くと同じように位置調整がかかるので若干体験できます(w
    ポップアップメニューがタイトルメニューにかかってくるので,右にある「ツール」や「ウィンドウ」のメニューが選べなくなります.

     |  ks  |  返信
  4. > タイトルまたやってしもうた...

    よくあることです、お気になさらずw

    > そんな気がしていました.というよりここまでつくっていたら「GUIライブラリ自作ですか!」ってレベルですしね.
    > ただ発現する人って希だと思います.マルチディスプレイでも普通横に並べると思いますし.

    そうですね、、、確認できたとしても直せそうにありませんしね。
    一応、メニューの中身がたくさんあるときにちょっとだけ上にずれる現象は確認できました。これは Windows 標準の CoolBar (メニューとかツールバーが乗ってて移動できるあのバーですね) という部品の仕様のようですね。他のアプリでも CoolBar を使っているものは同じようにちょっとズレて表示されたりしました。

    > いえいえ,本格的に開発するとなるとどうしてもお金はかかりますからね.
    > 私はお金かけたくない人間なので,Javascript と VS Express Edition で逃げていますが.

    私も基本的にお金をかけられない人間なので、最近は JavaScript とか PHP とかいじくって遊んでます。Delphi XE は酒を飲んで酔っ払った勢いでポチっちゃいました、、、いまは後悔しておりますw

    > 以前少し話に上がったPayPalあたりでの寄付をご検討されるのも一つかと.

    寄付も考えたことはありますが、日本ってあんまりそういう概念が浸透してないのもありますし、、、実際、私は一度もソフトウェアに寄付したことありませんから・・・w 今のところ広告出してポチポチしてもらうのが負担が少ないのかと思っています。

    どうしても 64bit 版が欲しいとかメトロインターフェースにしろ!とかいう人がいれば、Delphi XE3 でも郵送してくれたらうれしいですけれどねw

     |  Kuro  |  返信
  5. マルチディスプレイではないし全く全然1ミリも関係ないんですが

    Meryを画面右下の角に置いて使っています
    Meryのウィンドウの高さが低いとき(メニューとタスクバーの距離が近いとき)
    メニューを開くとメニューバーに重なって表示されてしまいます

     |  さささささ  |  返信
  6. どうも、こんばんは、レスポンス遅くなってすみません。

    > マルチディスプレイではないし全く全然1ミリも関係ないんですが

    そんなこともなさそうです。
    ちょっと本格的に調査してみましたところ、マルチディスプレイの場合 (セカンドディスプレイがメインの下側にある場合) も同じ原因によるもののようです。

    > Meryを画面右下の角に置いて使っています
    > Meryのウィンドウの高さが低いとき(メニューとタスクバーの距離が近いとき)
    > メニューを開くとメニューバーに重なって表示されてしまいます

    結論から申しますと、開発環境 Delphi の仕様 (不具合) でした。ただ、Mery のように可動式のメニューバーを搭載しているソフトでは同様の現象が発生しているものが多いですね。

    なぜそうなるのかも検討が付きましたが、開発環境の内部的な不具合ですので簡単に修正することは難しいと思われます。Delphi をアップグレードして治ってることに期待するか (10 万かかるけど・・・)、公式がパッチでも用意してくれないと手の施しようが無いです。(無理やり内部のプログラムを直せば治らないことは無いですが・・・)

    これは困ったものです。。。

     |  Kuro  |  返信
  7. すごい今更感がありますが,無理矢理メニュー位置を補正するプラグインを作ってみました.
    (いるとも思えませんが)私以外にお困りの方がいらっしゃるようでしたら,お試し下さい.
    http://merysmacro.up.seesaa.net/plugins/MenuRevise.zip

    ※かなり無理な処理をしているので,困っていない方は導入しないように.

    # 調べてみると,かなり不思議な動きになっているのですね
    # メニュー最下行のアイテムがタスクバーに重なっているか,
    # メニュー最下行のアイテムから開いたドロップメニューの最下行がタスクバーに重なると,
    # アイテム 1 行分上にずらすようで.
    # 開いたメニューだけならわかりますが,更にドロップしたメニューまで見るとは...

     |  ks  |  返信
  8. こんばんは。
    よくあのおかしな挙動を補正できましたね、しかも外部から・・・。

    > # 調べてみると,かなり不思議な動きになっているのですね

    下向きにビロンとメニューが表示された時にタスクバーに少しだけ重なってしまう場合はメニューを上に少しずらして表示、タスクバーに思いっきり重なる場合は上向きにメニューが表示されるっていうのが Windows の仕様のようですが、Delphi + CoolBar の組み合わせの場合、Delphi が自力でメニュー表示位置を計算しており、一応 Windows の挙動を踏まえた計算ロジックが組まれてはいるものの、そのロジックがかなり間違っているという悲しい不具合。

    致命的な問題ってほどでもないので Delphi のホットフィックスがでるまでお預け状態にしております。Delphi の標準ライブラリのコードを書き換えてしまうと何かとやっかいですので・・・。

     |  Kuro  |  返信
スポンサーリンク