同様の不具合 (
@800) がバージョン 1.554 で問題なしとなっていますが、
こちらはバージョン 1.555 でも再現します。
なでしこのソースを確認したところ、原因と思われる部分がわかりました。
フォームの X, Y に代入する以外の方法でフォームの位置を変更すると、
FTempX, FTempY に反映されず、RecoverXY によってフォームの位置が戻されるようです。
(バージョン 1.553 で @761 の修正のために追加された処理)
【再現方法】 (バージョン 1.555 で確認)
# 中央移動を使った場合
母艦のスタイルは「枠固定」 # 母艦の X, Y が FTempX, FTempY に反映される
母艦を中央移動
「母艦: {母艦のX}, {母艦のY}」と言う
# ここで RecoverXY が実行され、FTempX, FTempY の位置に戻される
# 中央移動を使った場合 (回避方法)
母艦を中央移動
母艦のスタイルは「枠固定」 # 母艦の X, Y が FTempX, FTempY に反映される
「母艦: {母艦のX}, {母艦のY}」と言う
# ここで RecoverXY が実行されるが、
# フォームの位置と FTempX, FTempY が同じであるため位置は変わらない
# 外部からウィンドウを移動した場合
母艦のスタイルは「枠固定」 # 母艦の X, Y が FTempX, FTempY に反映される
5秒待つ # この間にタイトルバーをドラッグして移動する
# ここで RecoverXY が実行され、FTempX, FTempY の位置に戻される
# 母艦の X のみ設定した場合
母艦のXは0 # 母艦の X が FTempX に反映される
「母艦: {母艦のX}, {母艦のY}」と言う
# ここで RecoverXY が実行されるが、
# FTempY が MaxInt のままなので、画面の外に行ってしまう
# 母艦の Y のみ設定した場合
母艦のYは0 # 母艦の Y が FTempY に反映される
「母艦: {母艦のX}, {母艦のY}」と言う
# FTempX が MaxInt のままなので、条件を満たさず RecoverXY は実行されない
# 母艦でないフォームの場合
テストとはフォーム
# バージョン 1.554 以降、
# フォームの作成時に FTempX, FTempY が母艦の X + 100, Y + 100 に設定される
「母艦: {母艦のX}, {母艦のY}」を表示
「テスト: {テストのX}, {テストのY}」を表示
テストを中央移動
「テスト 中央移動: {テストのX}, {テストのY}」を表示
テストを表示 # ここで RecoverXY が実行され、FTempX, FTempY の位置に変更される
「テスト 表示: {テストのX}, {テストのY}」を表示