ツリー一括表示

Nomal 「言う」「いう」の表示位置について /マイル (14/01/30(Thu) 10:49) [#6540]
Nomal 仕様です /のなお (14/01/30(Thu) 16:45) [#6541]
  └Nomal Re[2]: 仕様です /マイル (14/01/30(Thu) 18:25) [#6542] 解決済み!


親記事 / ▼[ 6541 ]
/ 親階層)  「言う」「いう」の表示位置について
□投稿者/ マイル 【124.154.44.66】(2014/01/30(Thu) 10:49:12)

    「言う」を使った場合は、母艦の中央に表示されるのですが
    「いう」だとモニターの中央に表示されます。
    これは仕様なのでしょうか?

    「いう」でも母艦の中央に表示させることはできるのでしょうか?


    よろしくお願いします。
[ □ Tree ] 返信 削除キー/
[ □ Tree ] 返信

▲[ 6540 ] / ▼[ 6542 ]
/ 1階層)  仕様です
□投稿者/ のなお 【110.4.172.148】(2014/01/30(Thu) 16:45:35)

    こんにちは。

    > これは仕様なのでしょうか?
    仕様です。

    > 「いう」でも母艦の中央に表示させることはできるのでしょうか?
    出来ませんが、タイマーを使って移動させる方法があります。

    ダイアログ系で以前にも似たような質問に回答しました。
    以前の回答: http://nade.jp-pro.net/bbs/bbs1/old/mbbs2.php?m=thread&threadid=203
    リンク先は結局フォームでダイアログを作って解決したようです。

    以前の回答サンプルでは、ダイアログに一意のタイトルをつけて、窓ハンドル検索待機を使ってハンドルを取得していましたので、アクティブに関係なくハンドルを取得する方法でした。


    今回はアクティブなウィンドウを対象にしたサンプルを考えてみました。
    以下のサンプルは、ダイアログボックスがデスクトップ上で最前面のアクティブであるという前提です。
    これを改造すれば「いう」ダイアログに限らず別のダイアログにも使えて好きな位置に移動することが出来ると思います。


    #ここから
    #-----------------------------------------------------------------------
    ※このタイマーと「●いう」関数は呼び出される行より前の行に置くこと
    ダイアログタイマーとはタイマー
    その値は30 #ミリ秒:あまり早いと座標が取得出来ない。遅いとチラッと見えてしまう。
    その時満ちた時は〜
      ダイアログタイマーを停止 #即停止させる
      #-----------------------------------
      Aとは文字列
      A=窓アクティブハンドル取得の窓ハンドルサイズ取得を「,」で区切る
      A[0]=(A[2]-A[0])/2。A[1]=(A[3]-A[1])/2 #ダイアログの縦横サイズの半分を求める
      A[2]=母艦のW/2+母艦のX-A[0]。A[3]=母艦のH/2+母艦のY-A[1] #母艦の半分からダイアログの半分を引く
      A[2],A[3]へ窓位置移動
    ●いう(Sと|Sを)、母艦ハンドルを窓ハンドルアクティブ。ダイアログタイマーの開始。Sをシステム:いう
    #-----------------------------------------------------------------------

    テストとはボタン
    そのクリックした時は〜
      「サンプル{~}『いう』で母艦の中心へ移動して表示するよ」という
    #ここまで


    関数内で「母艦ハンドルを窓ハンドルアクティブ」してる理由ですが、
    今回のサンプルではボタンを押すので必ず母艦がアクティブなはずなので心配ないのですが、例えば別のタイマーイベント等で後から「いう」を行うと母艦がアクティブでない可能性があり、その場合ダイアログもアクティブではなくなり、その時の別ウィンドウが対象になってしまうのを防ぐためです。

    この関数は「いう」命令を上書きして、関数内で「システム:いう」を使っています。もし、上書きがいやであれば、関数名を「云う」などと自由に変更してください。

    あと、フォームで自作したダイアログの回答です。
    自作ダイアログ: http://nade.jp-pro.net/bbs/bbs/cbbs.cgi?mode=al2&number=5905&no=0

    ご参考まで。


    No6540に返信(マイルさんの記事)
    > 「言う」を使った場合は、母艦の中央に表示されるのですが
    > 「いう」だとモニターの中央に表示されます。
    > これは仕様なのでしょうか?
    >
    > 「いう」でも母艦の中央に表示させることはできるのでしょうか?
    >
    >
    > よろしくお願いします。

    *(2014/01/30(Thu) 16:56:20 編集[投稿者])
[ 親 6540 / □ Tree ] 返信 削除キー/
[ 親 6540 / □ Tree ] 返信

▲[ 6541 ] / 返信無し
/ 2階層)  Re[2]: 仕様です
□投稿者/ マイル 【124.154.44.66】(2014/01/30(Thu) 18:25:22)

    No6541に返信(のなおさんの記事)

    のなおさん、ありがとうございます。
    仕様なんですね。

    早速、教えて頂いたコードを試してみたいと思います。

    ありがとうございました。



    > こんにちは。
    >
    >>これは仕様なのでしょうか?
    > 仕様です。
    >
    >>「いう」でも母艦の中央に表示させることはできるのでしょうか?
    > 出来ませんが、タイマーを使って移動させる方法があります。
    >
    > ダイアログ系で以前にも似たような質問に回答しました。
    > 以前の回答: http://nade.jp-pro.net/bbs/bbs1/old/mbbs2.php?m=thread&threadid=203
    > リンク先は結局フォームでダイアログを作って解決したようです。
    >
    > 以前の回答サンプルでは、ダイアログに一意のタイトルをつけて、窓ハンドル検索待機を使ってハンドルを取得していましたので、アクティブに関係なくハンドルを取得する方法でした。
    >
    >
    > 今回はアクティブなウィンドウを対象にしたサンプルを考えてみました。
    > 以下のサンプルは、ダイアログボックスがデスクトップ上で最前面のアクティブであるという前提です。
    > これを改造すれば「いう」ダイアログに限らず別のダイアログにも使えて好きな位置に移動することが出来ると思います。
    >
    >
    > #ここから
    > #-----------------------------------------------------------------------
    > ※このタイマーと「●いう」関数は呼び出される行より前の行に置くこと
    > ダイアログタイマーとはタイマー
    > その値は30 #ミリ秒:あまり早いと座標が取得出来ない。遅いとチラッと見えてしまう。
    > その時満ちた時は〜
    >   ダイアログタイマーを停止 #即停止させる
    >   #-----------------------------------
    >   Aとは文字列
    >   A=窓アクティブハンドル取得の窓ハンドルサイズ取得を「,」で区切る
    >   A[0]=(A[2]-A[0])/2。A[1]=(A[3]-A[1])/2 #ダイアログの縦横サイズの半分を求める
    >   A[2]=母艦のW/2+母艦のX-A[0]。A[3]=母艦のH/2+母艦のY-A[1] #母艦の半分からダイアログの半分を引く
    >   A[2],A[3]へ窓位置移動
    > ●いう(Sと|Sを)、母艦ハンドルを窓ハンドルアクティブ。ダイアログタイマーの開始。Sをシステム:いう
    > #-----------------------------------------------------------------------
    >
    > テストとはボタン
    > そのクリックした時は〜
    >   「サンプル{~}『いう』で母艦の中心へ移動して表示するよ」という
    > #ここまで
    >
    >
    > 関数内で「母艦ハンドルを窓ハンドルアクティブ」してる理由ですが、
    > 今回のサンプルではボタンを押すので必ず母艦がアクティブなはずなので心配ないのですが、例えば別のタイマーイベント等で後から「いう」を行うと母艦がアクティブでない可能性があり、その場合ダイアログもアクティブではなくなり、その時の別ウィンドウが対象になってしまうのを防ぐためです。
    >
    > この関数は「いう」命令を上書きして、関数内で「システム:いう」を使っています。もし、上書きがいやであれば、関数名を「云う」などと自由に変更してください。
    >
    > あと、フォームで自作したダイアログの回答です。
    > 自作ダイアログ: http://nade.jp-pro.net/bbs/bbs/cbbs.cgi?mode=al2&number=5905&no=0
    >
    > ご参考まで。
    >
    >
    > ■No6540に返信(マイルさんの記事)
    >>「言う」を使った場合は、母艦の中央に表示されるのですが
    >>「いう」だとモニターの中央に表示されます。
    >>これは仕様なのでしょうか?
    >>
    >>「いう」でも母艦の中央に表示させることはできるのでしょうか?
    >>
    >>
    >>よろしくお願いします。
    >
    > *(2014/01/30(Thu) 16:56:20 編集[投稿者])
解決済み!
[ 親 6540 / □ Tree ] 返信 削除キー/
[ 親 6540 / □ Tree ] 返信


Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版